Problema con variables en instrucción sql

Hola experto.
Estoy desarrollando una aplicación que desde un formulario de login recupera valores de una tabla de usuarios.
En esta tabla de usuarios se almacena un nombre de tabla que usa cada uno.
Esta tabla la almaceno en una variable global :tabla
A la hora de generar una sentencia sql tipo:
select campo1,campo2 from :tabla //no me funciona
pero en cambio si puedo hacer una sentencia:
insert into :variable etc...
Puedes ayudarme. Gracias de antemano

1 Respuesta

Respuesta
1
Todo eso que te puse lo tienes que poner en el lugar que necesitas hacer el select ese que quieres armar con TABLA.
//aca armas en un string el select que queres ejecutar
ls_select = "select campo1,campo2 from " + ls_tabla + " where algo = ?"
//Los? están en el lugar de variables (lo que usualmente pones como :ll_variable)
//Acá declaras un cursor dinámico, sqlsa es un área dinámica (similar a SQLCA PERO dinámica)
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;
//Acá le decís que vas a usar el string que armaste antes
PREPARE SQLSA FROM :ls_select ;
//¿Aca lo abris dinamicamente usando valores que recopilas para lo que antes pusiste como?
OPEN DYNAMIC my_cursor using :li_valor_de_algo ;
//aca ejecutas la sentecia
FETCH my_cursor INTO :li_campo1, :li_campo2 ;
//aca cerras el cursor
CLOSE my_cursor ;
Podrías ser un poco más explicito.
¿Dónde hay que poner el código?, entiendo el código hasta my_cursor.
Gracias de antemano.
Si interporeto correctamente lo que queres hacer es un select dinamico. Si es asi lo que tenes que hacer es armar el select que queres en un string y despues ejecutar estye string.
Fíjate en la ayuda las funciones de Dynamic SQL.
Ej rapido con Dynamic SQL formato 3:
ls_select = "select campo1,campo2 from " + ls_tabla + " where algo = ?"
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;
PREPARE SQLSA FROM :ls_select ;
OPEN DYNAMIC my_cursor using :li_valor_de_algo ;
FETCH my_cursor INTO :li_campo1, :li_campo2 ;
CLOSE my_cursor ;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas