Oracle - SQL Dinamico

 
Vista:

SQL Dinamico

Publicado por felix (3 intervenciones) el 19/02/2003 10:50:09
Si tengo una query que devuelve un solo registro que la parte where es variable tengo que crear la sentencia dinamicamente, por ejemplo:
"select empresa from tabla where grupo = :grupo"
Si esta select devuelve un solo registro y no quiero usar un cursor, cómo recogo el valor del campo empresa que se me devuelve???????
La select se construye en un PREPARE y se ejecuta con EXECUTE pero
no se como coger el valor que devuelve el campo empresa sin usar un
cursor.
Gracias de antemano al que pueda resolver esta duda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SQL Dinamico

Publicado por Alexandra (13 intervenciones) el 19/02/2003 17:19:13
para ejecutar sqls dinamicos yo utilizo EXECUTE INMEDIATE. Se usa asi:

vSentencia := \'SELECT COLUMNA FROM .........\';

EXECUTE INMEDIATE vSentencia INTO v_Variable;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL Dinamico

Publicado por felix (3 intervenciones) el 19/02/2003 17:42:51
Gracias pero eso ya lo he probado pero me dice el precompilador
que la clausula INTO en la sentencia:
"EXEC SQL EXECUTE IMMEDIATE :vs_sentencia INTO :vc_empresa;"
no es correcta.
¿Que hago?¿A ti te funciona?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL Dinamico

Publicado por Alexandra (13 intervenciones) el 19/02/2003 18:18:46
sip, pero en este momento no tengo exactamente el codigo, pero me acuerdo que funcionaba esa instruccion. Dejame buscar y te envio el codigo exacto del procedimiento a tu mail.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL Dinamico

Publicado por TSDC (4 intervenciones) el 20/02/2003 02:08:00
DECLARE
VARIABLE1 TIPO1 ;
VARIABLE2 TIPO2 ;
. . .
TYPE CV_TYPE REF CURSOR ;
CV TYPE CV_TYPE ;
BEGIN
OPEN CV FOR ‘ SELECT COLUMNA1 , COLUMNA2 , . . . FROM TABLA WHERE . . . ‘ ;
LOOP
FETCH CV INTO VARIABLE1 , VARIABLE2, . . . ;
EXIT WHEN CV%NOTFOUND
SENTENCIAS ;
END LOOP ;
CLOSE CV ;
END ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL Dinamico

Publicado por felix (3 intervenciones) el 20/02/2003 09:27:04
Si eso en pl/sql va muy bien y manejando cursores tambien.
La cuestion es que lo quiero hacer sin manejar cursores en pro*c
Solo recoger datos de una sentencia simple que debe tener la parte where varibale por lo que hay que usar sql sinámico. el problema es recoger los datos devueltos por la select sin usar cursores.
Gracias de todas maneras por la contestanción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQL Dinamico

Publicado por TSDC (4 intervenciones) el 20/02/2003 17:25:14
Te mando por mail un ejemplo de PROC ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar