Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2012, 09:12
jsmaira
 
Fecha de Ingreso: enero-2012
Mensajes: 29
Antigüedad: 12 años, 3 meses
Puntos: 0
Consulta al procedimiento error en open ...???

Amigos necesito ayuda...
tengo un procedimiento y necesito que traiga unos datos dinamicos..el problema es el siguiente.
El procedimiento al guardar perfecto..el problem es al consultar este procedimiento..el error que envia es el siguiente:


ERROR: syntax error at or near "OPEN" en el carácter 16
QUERY: BEGIN
OPEN SWV_Res.SWV_RefCur FOR
SELECT id_cine2, nombre_pelicula FROM cine2 ORDER BY nombre_pelicula EXCEPTION WHEN OTHERS THEN
NULL;
END;
CONTEXT: PL/pgSQL function "domo_getlookupdata" line 24 at execute statement


********** Error **********

ERROR: syntax error at or near "OPEN"
SQL state: 42601
Context: PL/pgSQL function "domo_getlookupdata" line 24 at execute statement

supuestamente haria bien la consulta pero no funciona ese asunto del open..
aqui esta el procedimiento correspondiente..

CREATE OR REPLACE FUNCTION DOMO_getLookupData(v_strTabla VARCHAR(100)
,v_strCampoLookup VARCHAR(100)
,v_intIdRegistro VARCHAR(100))

RETURNS DOMO_getLookupData_result AS
$procedure$
DECLARE
v_sql VARCHAR(8000);
SWV_Res DOMO_getLookupData_result;
BEGIN

IF v_intIdRegistro <> 0 then
v_sql := 'OPEN SWV_Res.SWV_RefCur FOR
SELECT id_'|| v_strTabla || ', ' || v_strCampoLookup ||
' FROM ' || v_strTabla ||
' WHERE id_'|| v_strTabla || ' = ' || CAST(v_intIdRegistro AS VARCHAR(30)) ||
' ORDER BY ' || v_strCampoLookup|| ' ';

ELSE
v_sql := 'BEGIN
OPEN SWV_Res.SWV_RefCur FOR
SELECT id_'|| v_strTabla || ', ' || v_strCampoLookup ||
' FROM ' || v_strTabla ||
' ORDER BY ' || v_strCampoLookup || ' EXCEPTION WHEN OTHERS THEN
NULL;
END;';
end if;

-- NOT SUPPORTED PRINT @sql;
EXECUTE v_sql;
RETURN SWV_Res;
END;
$procedure$
LANGUAGE plpgsql;
ALTER FUNCTION DOMO_getLookupData(varchar(100), varchar(100), varchar(100)) OWNER TO sa;


y este es el tipo:

CREATE TYPE DOMO_getLookupData_result AS(SWV_RefCur refcursor);


alguien que me ayude por fa

saludos