JMP 13 JSL che passa le variabili all'istruzione SQL di OracleSto lavorando con un collega che ha uno script JMP 13 per definire le variabili utilizzando le finestre modali.La selezione dell'utente imposta quindi le variabili che vogliamo passare in una sezione di database aperto del nostro script nell'istruzione SQL.La tabella dati viene aggiornata per il forno selezionato nella finestra Modale.Selezioniamo quindi la colonna forno per passare questo valore nella nostra istruzione SQL.
Esempio.
OvenList={18,22};
nw=New Window( " Reference Units",<<MODAL></MODAL>
Il problema che abbiamo è il seguente...
forno_id: lo script passa [2,2]
test_part_id: lo script passa {"partid1","partid2"}
Domande
1) come selezioniamo il primo valore nella colonna forno da impostare come forno_id che viene passato all'istruzione SQL?
2) A Oracle sembra non piacere le parentesi e le virgolette doppie. Funziona se codifichiamo virgolette singole e ID parte, ad esempio: IN('partid1','partid2')
AIUTO!!!
Oggetto: JMP 13 JSL che passa variabili all'istruzione SQL di OracleSono contento che abbia funzionato per te.È necessario utilizzare il costrutto ^varname^ evalinsert .L'uso di evalinsert consente un codice dall'aspetto più pulito e non è necessario convertire i numeri in stringhe con char().
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");Oggetto: JMP 13 JSL che passa variabili all'istruzione SQL di Oraclepmroz,
Grazie per la rapida risposta e il suggerimento sul codice.Ha funzionato perfettamente per la nostra applicazione.Grazie mille.Abbiamo provato tutti i tipi di soluzioni da vari forum utilizzando ^var_name^, ^||var_name||^, ecc. La tua soluzione creando l'elenco era il passaggio della soluzione che ci mancava.
Oggetto: JMP 13 JSL che passa variabili all'istruzione SQL di OracleOttieni valori restituisce un elenco, quindi è necessario fare riferimento ai singoli elementi dell'array per poterli utilizzare.Puoi usare elementi concatenati per creare un elenco IN.Funzionerà:
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");