좋은 저녁이에요,
저는 JSL 초보자입니다. 구문 오류나 다른 게 있는 것 같습니다.
JSL 스크립트에서 SQL 저장 프로시저를 실행하려고 합니다. 제 데이터베이스 연결은 제대로 작동하는 것 같습니다(쿼리가 select 문인 경우 참조). 하지만 저장 프로시저를 실행하여 데이터 테이블을 얻을 수 없습니다. 아래에 나열했습니다.
1) 작동하는 쿼리 수식(select 문) 및
2) 저장 프로시저를 실행하지 않는 세 가지 쿼리 수식.
방문해 주셔서 감사합니다. --Birdi (JMP 17.0.0)
// HELP: The select statement works but the stored procedure doesn't.
//Does anyone have an idea as to what I'm missing?
// I can run the select statement, but I could use some help on running the stored procedure.
//query="SELECT * FROM [dbo].[tblCost_Outliers]"; // works
query = "exec dbo.procCost_PM_Birdi"; // doesn't work
//query="begin dbo.procCost_PM_Birdi; end;"; // doesn't work
//query = "dbo.procCost_PM_Birdi"; // doesn't work
//create connection
dbc = Create Database Connection(
"DSN=*****;UID=*****;PWD=*****;APP=JMP;WSID=*****;DATABASE=*****;"
);
//get result
Execute SQL( dbc, query );
//tidyup
Close Database Connection( dbc );
그게 무슨 뜻이야? JSL 코드를 삽입하려면? 네, 저는 초보입니다. 인내심을 가져주셔서 감사합니다.
어떤 데이터베이스를 사용하고 있는지 잘 모르겠습니다.나는 다른 구문을 가진 Oracle을 사용하지만 도움이 될 수 있는 몇 가지 일반적인 원칙이 있습니다.
- Execute SQL은 저장 프로시저에 대한 호출에서 직접 테이블 데이터를 반환할 수 없습니다.
- 저장 프로시저가 테이블을 생성하는 경우 두 번째 호출을 수행하여 해당 데이터를 검색합니다.
이는 Oracle에서 작동합니다.
execproc = "begin myuser.my_oracle_proc; end";
query = "SELECT * FROM myuser.mytable";
// Run the procedure to load the table tblCost_Outliers
Execute SQL( dbc, execproc );
// Retrieve the table into the variable dt
dt = Execute SQL( dbc, query );
//tidyup
Close Database Connection( dbc );
어쩌면 JMP 기술 지원팀이 데이터베이스에 대한 프로시저를 호출하기 위한 올바른 구문을 제공하는 데 도움을 줄 수도 있습니다.