JMP 13 JSL, das Variablen an die Oracle-SQL-Anweisung übergibtIch arbeite mit einem Kollegen zusammen, der über ein JMP 13-Skript verfügt, um Variablen mithilfe modaler Fenster zu definieren.Durch die Benutzerauswahl werden dann Variablen festgelegt, die wir in der SQL-Anweisung an einen offenen Datenbankabschnitt unseres Skripts übergeben möchten.Die Datentabelle wird für den Ofen aktualisiert, der im Modalfenster ausgewählt ist.Anschließend wählen wir die Ofenspalte aus, um diesen Wert an unsere SQL-Anweisung zu übergeben.
Beispiel.
OvenList={18,22};
nw=New Window( " Reference Units",<<MODAL></MODAL>
Das Problem, das wir haben, ist das folgende ...
ofen_id: Skript besteht [2,2]
test_part_id: Skript übergibt {"partid1", "partid2"}
Fragen
1) Wie wählen wir den ersten Wert in der Oven-Spalte aus, um ihn als Oven_ID festzulegen, die an die SQL-Anweisung übergeben wird?
2) Oracle scheint Klammern und doppelte Anführungszeichen nicht zu mögen. Es funktioniert, wenn wir einfache Anführungszeichen und Teile-IDs fest codieren, z. B.: IN('partid1','partid2')
HELFEN!!!
Betreff: JMP 13 JSL, das Variablen an die Oracle-SQL-Anweisung übergibtFreut mich, dass es bei dir funktioniert hat.Das Konstrukt ^varname^ muss mit verwendet werden evalinsert .Die Verwendung von evalinsert ermöglicht einen etwas übersichtlicheren Code, und Sie müssen Zahlen nicht mit char() in Zeichenfolgen konvertieren.
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql = evalinsert(
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = ^oven_id[1]^
AND db.table.field In ^test_part_in_list^ ORDER BY test_part_id ASC");
Open Database( -- connection string info -- , sql, "dataset");Betreff: JMP 13 JSL, das Variablen an die Oracle-SQL-Anweisung übergibtpmroz,
Vielen Dank für Ihre schnelle Antwort und Ihren Codevorschlag.Für unsere Anwendung hat es perfekt funktioniert.Vielen Dank.Wir haben alle Arten von Lösungen aus verschiedenen Foren mit ^var_name^, ^||var_name||^ usw. ausprobiert. Ihre Lösung durch die Erstellung der Liste war der Lösungsschritt, der uns gefehlt hat.
Betreff: JMP 13 JSL, das Variablen an die Oracle-SQL-Anweisung übergibtHolen Sie sich Werte gibt eine Liste zurück, daher müssen Sie auf einzelne Array-Elemente verweisen, um sie verwenden zu können.Sie können verwenden Concat-Elemente um eine IN-Liste zu erstellen.Das wird funktionieren:
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql =
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = " || char(oven_id[1]) || "
AND db.table.field In " || test_part_in_list || "ORDER BY test_part_id ASC";
Open Database( -- connection string info -- , sql, "dataset");