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 
  
 

