新手求助,plsql,function,第一次写,不知道错在哪里

时间:2021-12-03 06:06:27
写在包里头的一个函数,第一次写这种东西,弄了一个上午也不知到错在哪里,感谢

FUNCTION F_JH_REFRESHNEWSPROC() RETURN NVARCHAR2 IS
  CLOB_PROC_TXT NVARCHAR2(8000);
  V_INSERTSQL   NVARCHAR2(500);
  V_SELECTSQL   NVARCHAR2(500);
  CURSOR CURSOR_LOOP IS
    SELECT INSERT_PART.SQL_APP INSERTSQL, --SQL 插入部分
           SELECT_PART.SQL_APP SELECTSQL --SQL 数据处理部分
      FROM AUD_JH_FUN_LIST AS INSERT_PART
      LEFT OUTER JOIN AUD_JH_FUN_LIST AS SELECT_PART ON INSERT_PART.FUN_LIST_NO =
                                                        SELECT_PART.FUN_LIST_NO
                                                    AND SELECT_PART.IS_EXCUTE = '1' -- 存在数据处理SQL
     WHERE INSERT_PART.IS_EXCUTE = '2'; -- 存在数据插入SQL
BEGIN
  --**主程序块 ******************************--
  CLOB_PROC_TXT := 'CREATE OR REPLACE PROCEDURE SP_JH_check_data(NVARCHAR2_Org_No IN NVARCHAR2 ,DATE_StartDate IN DATE,DATE_EndDate IN DATE ) IS BEGIN'; --存储过程头部
  OPEN CURSOR_LOOP;
  LOOP
    FETCH CURSOR_LOOP
      INTO V_INSERTSQL, V_SELECTSQL;
    CLOB_PROC_TXT := CLOB_PROC_TXT || '; COMMIT; ' || V_INSERTSQL ||
                     V_SELECTSQL; --循环加入数据处理语句
    EXIT WHEN REC.COUNT = 0;
  END LOOP;
  CLOSE CURSOR_LOOP;
  CLOB_PROC_TXT := CLOB_PROC_TXT || 'COMMIT; END SP_JH_check_data;'; --存储过程尾部
  RETURN CLOB_PROC_TXT;
END F_JH_REFRESHNEWSPROC;

4 个解决方案

#1


贴出错误信息。

在函数里动态创建存储过程?
是何目的?

#2


在函数里动态创建存储过程,我在plsql developer 里头写的,写完提示不能解析,不知道哪里错了

#3


包的头文件

CREATE OR REPLACE PACKAGE JH_TEST IS


  FUNCTION F_JH_REFRESHNEWSPROC() RETURN CLOB;


END JH_TEST;

#4


顶一下
   oracle QQ群:54775466
           期待您的一起探讨
                      欢迎爱好者入群学习

#1


贴出错误信息。

在函数里动态创建存储过程?
是何目的?

#2


在函数里动态创建存储过程,我在plsql developer 里头写的,写完提示不能解析,不知道哪里错了

#3


包的头文件

CREATE OR REPLACE PACKAGE JH_TEST IS


  FUNCTION F_JH_REFRESHNEWSPROC() RETURN CLOB;


END JH_TEST;

#4


顶一下
   oracle QQ群:54775466
           期待您的一起探讨
                      欢迎爱好者入群学习