¿Cómo asigno un resultado de consulta SQL a una variable?¡Hola! Soy nuevo en la programación de scripts JMP/JSL y tengo algunos problemas para entender las cosas. Siento que lo que intento hacer debería ser muy simple, pero nada parece funcionar como esperaba y Google me está fallando.
Lo que intento hacer: tengo un procedimiento almacenado simple que simplemente devuelve un valor de límite de control de nuestra base de datos SQL en función de algunos parámetros que le paso. Luego intento asignar ese valor a un límite de control de Levey Jennings para una columna. El código a continuación es lo más lejos que he llegado.
Este código genera una tabla con el valor deseado.
// 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 || "'"
);Luego intento usar el valor de "vLCL" y aplicarlo a las propiedades de una columna de tablas diferentes.
// Change column property
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( vLCL ) )}
);El script anterior funciona bien cuando reemplazo "vLCL" con un número.
Creo que me estoy quedando atascado en cómo utilizo el resultado de SQL como una variable real. ¿Hay alguna forma de consultar un valor directamente en una variable en lugar de extraerlo a una nueva tabla?
¡Cualquier ayuda con esto sería muy apreciada! ¡¡Gracias de antemano!!
-Jane
Automatización y scriptingRe: ¿Cómo asigno un resultado de consulta SQL a una variable?Si tu vLCL tiene lo que estás buscando, solo necesitas evaluarlo, aquí hay una opción sobre cómo hacerlo con propiedades de columna como esta
Eval(EvalExpr(
Data Table("testTable"):testColumn << Set Property(
"Control Limits",
{Levey Jennings(LCL(Expr(vLCL)))}
);
));
Si no está seguro de lo que se almacena en vLCL, puede agregar, por ejemplo:
show(vLCL);
Luego de realizar la consulta y verificar que tenga lo que buscas
Re: ¿Cómo asigno un resultado de consulta SQL a una variable?¡Gracias por la respuesta! Intenté editarla según lo que compartiste y cuando hago un "Mostrar" me aparece esto:
vLCL = DataTable("Resultados SQL 799");
Entonces creo que mi problema es que en realidad no estoy asignando el resultado de la consulta a vLCL como un valor numérico. ¿Sabes cómo puedo corregir esto?
¡¡Gracias de nuevo!!
Jane
Re: ¿Cómo asigno un resultado de consulta SQL a una variable?Depende de la tabla resultante que contiene vLCL. La subíndice de la tabla de datos puede ser suficiente y, a veces, es posible que deba combinarlo con << obtener filas donde.
A continuación se muestra un ejemplo muy básico de subíndice de tabla de datos que toma valores de la primera fila de las columnas LSL y 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"];
Subíndices de tablas de datos
Re: ¿Cómo asigno un resultado de consulta SQL a una variable?Oh Dios mío, ¡gracias! ¡Esto es exactamente lo que me estaba perdiendo!
¡Ajusté mi código a lo siguiente y está funcionando perfectamente!
// 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) ) )}
);
));¡Gracias, gracias, gracias!
-Jane