oracle 存储过程编译有问题
CREATE OR REPLACE PROCEDURE test_proc
(
tablename IN varchar2
) IS
filed_test varchar2(30):='';
VN_Field_Str varchar2(4000):= '';
BEGIN
declare CURSOR Cur_fieldsd IS
select column_name
from user_tab_columns
where upper(table_name) = upper(tablename);
OPEN Cur_fieldsd;
LOOP
FETCH Cur_fieldsd
INTO filed_test;
EXIT WHEN Cur_fieldsd%NOTFOUND;
VN_Field_Str := VN_Field_Str || filed_test || ',';
end loop;
CLOSE Cur_fieldsd;
dbms_output.put_line(VN_Field_Str);
END test_proc;
call test_proc('T_BC_OtherExpenseBill');
PROCEDURE EASUSER4.TEST_PROC 编译错误
错误:PLS-00103: 出现符号 "FETCH"在需要下列之一时:
constant exception
<an identifier> <a double-quoted delimited-identifier> table
LONG_ double ref char time timestamp interval date binary
national character nchar
行:19
文本:FETCH Cur_fieldsd
错误:PLS-00103: 出现符号 "CLOSE"在需要下列之一时:
end not pragma final
instantiable order overriding static member constructor map
行:24
文本:CLOSE Cur_fieldsd;
(
tablename IN varchar2
) IS
filed_test varchar2(30):='';
VN_Field_Str varchar2(4000):= '';
BEGIN
declare CURSOR Cur_fieldsd IS
select column_name
from user_tab_columns
where upper(table_name) = upper(tablename);
OPEN Cur_fieldsd;
LOOP
FETCH Cur_fieldsd
INTO filed_test;
EXIT WHEN Cur_fieldsd%NOTFOUND;
VN_Field_Str := VN_Field_Str || filed_test || ',';
end loop;
CLOSE Cur_fieldsd;
dbms_output.put_line(VN_Field_Str);
END test_proc;
call test_proc('T_BC_OtherExpenseBill');
PROCEDURE EASUSER4.TEST_PROC 编译错误
错误:PLS-00103: 出现符号 "FETCH"在需要下列之一时:
constant exception
<an identifier> <a double-quoted delimited-identifier> table
LONG_ double ref char time timestamp interval date binary
national character nchar
行:19
文本:FETCH Cur_fieldsd
错误:PLS-00103: 出现符号 "CLOSE"在需要下列之一时:
end not pragma final
instantiable order overriding static member constructor map
行:24
文本:CLOSE Cur_fieldsd;
...全文
相关推荐
oracle存储过程编译错误问题
NULL 博文链接:https://forlab.iteye.com/blog/1821751
用Java编写Oracle数据库存储过程
用Java编写Oracle数据库存储过程
oracle存储过程学习经典入门
oracle存储过程学习经典入门 非常好的 初学者必看
ORACLE存储过程最全教程
超实用最全的ORACLE教程
Oracle执行存储过程权限不足
Oracle新建了一个存储过程,里面包含CREATE和DROP,逐条依据可以执行,但是执行整个存储过程报权限不足的错误。 在网上看到,Oracle规定,在默认的情况下,在调用存储过程用户的角色不起作用,即在执行存储过程时只有Public权限。所以在调用Create table时,会有权限不足的提示。所以需要给当前存储过程制定角色,指定AUTHID 属性, 即写为: create or replace PROCEDURE 存储过程名称 Authid Current_User IS BEGIN ……; END; 存储过程能够正常执行了!


