Guten Abend,
Ich bin ein JSL-Anfänger. Ich vermute, dass ich einen Syntaxfehler oder so etwas habe.
Ich versuche, eine gespeicherte SQL-Prozedur aus einem JSL-Skript auszuführen. Meine Datenbankverbindungen scheinen ordnungsgemäß zu funktionieren (siehe, wenn die Abfrage eine Select-Anweisung ist). Allerdings kann ich die gespeicherte Prozedur nicht ausführen und mir die Datentabelle geben. Nachfolgend habe ich aufgelistet:
1) die Abfrageformel, die funktioniert (die Select-Anweisung) und
2) die drei Abfrageformeln, die meine gespeicherte Prozedur nicht ausführen.
Vielen Dank, dass Sie vorbeigeschaut haben. –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 );
Was bedeutet das zu verwenden um JSL-Code einzufügen? Ja, ich bin neu. Vielen Dank für Ihre Geduld.
Ich bin nicht sicher, welche Datenbank Sie verwenden.Ich verwende Oracle, das eine andere Syntax hat, aber es gibt einige allgemeine Prinzipien, die hilfreich sein können:
- Execute SQL kann Tabellendaten von einem Aufruf einer gespeicherten Prozedur nicht direkt zurückgeben.
- Wenn Ihre gespeicherte Prozedur eine Tabelle erstellt, führen Sie einen zweiten Aufruf durch, um diese Daten abzurufen.
Das funktioniert in 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 );
Vielleicht kann Ihnen der technische Support von JMP bei der korrekten Syntax zum Aufrufen einer Prozedur für Ihre Datenbank helfen.
Sehen https://community.jmp.com/t5/Discussions/SQL-query-to-ODBC-datasource-SQL-server-with-temporary-tables/mp/457582#M70262 . Dies wird Ihnen bei diesem Problem helfen, da Sie SQL Server verwenden.