Come assegno il risultato di una query SQL a una variabile?Ciao! Sono nuovo nello scripting JMP/JSL e ho qualche problema a capire le cose. Ho la sensazione che quello che sto cercando di fare dovrebbe essere molto semplice, ma niente sembra funzionare come mi aspetterei e Google mi sta deludendo.
Cosa sto cercando di fare: ho una semplice stored procedure che restituisce semplicemente un valore di limite di controllo dal nostro database SQL in base ad alcuni parametri che gli passo. Sto quindi cercando di assegnare quel valore a un limite di controllo Levey Jennings per una colonna. Il codice seguente è tutto ciò che sono riuscito a ottenere.
Questo codice genera una tabella con il valore desiderato.
// Get limit value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
vLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);Provo quindi a utilizzare il valore "vLCL" e ad applicarlo alle proprietà delle colonne di tabelle diverse.
// Change column property
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( vLCL ) )}
);Lo script sopra funziona bene se sostituisco "vLCL" con un numero.
Penso che mi stia bloccando, come faccio a usare il mio risultato SQL come una variabile effettiva? C'è un modo per interrogare un valore direttamente in una variabile invece di inserirlo in una nuova tabella?
Ogni aiuto in merito sarebbe molto apprezzato! Grazie in anticipo!!
-Jane
Automazione e scriptingR: Come faccio ad assegnare il risultato di una query SQL a una variabile?Se il tuo vLCL ha ciò che stai cercando, devi solo valutarlo, ecco un'opzione su come farlo con proprietà di colonna come questa
Eval(EvalExpr(
Data Table("testTable"):testColumn << Set Property(
"Control Limits",
{Levey Jennings(LCL(Expr(vLCL)))}
);
));
Se non sei sicuro di cosa è archiviato in vLCL, puoi ad esempio aggiungere
show(vLCL);
dopo la query e verifica che abbia ciò che stai cercando
R: Come faccio ad assegnare il risultato di una query SQL a una variabile?Grazie per la risposta! Ho provato a modificarlo in base a ciò che hai condiviso e quando faccio uno "Show" ottengo questo:
vLCL = DataTable("Risultati SQL 799");
Quindi penso che il mio problema sia che in realtà non sto assegnando il risultato della query a vLCL come valore numerico. Sai come posso correggere questo?
Grazie ancora!!
Giovanna
R: Come faccio ad assegnare il risultato di una query SQL a una variabile?Dipende dalla tabella risultante che vLCL contiene. L'indicizzazione della tabella dati potrebbe essere sufficiente e a volte potresti doverla combinare con << get rows where.
Di seguito è riportato un esempio molto elementare di indicizzazione di tabelle dati che prende i valori dalla prima riga dalle colonne LSL e USL
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
my_lsl = dt[1, "LSL"];
my_usl = dt[1, "USL"];
Sottoscrizione della tabella dati
R: Come faccio ad assegnare il risultato di una query SQL a una variabile?Oh mio Dio, grazie! Questo è esattamente ciò che mi mancava!
Ho modificato il mio codice come segue e funziona perfettamente!
// Get limit value -- returns a new table with a single value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
tblLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);
//assign table value to variable
vLCL = tblLCL[1,1];
// Change column property
Eval(EvalExpr(
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( Expr(vLCL) ) )}
);
));Grazie grazie grazie!
-Jane