oracle存储过程中,动态创建表,并授权和创建同义词时进入异常!
createorreplaceprocedurexxx_pisv_sqlvarchar2(4000);beginv_sql:='createtablexxxxxxx......
create or replace procedure xxx_p
is
v_sql varchar2(4000);
begin
v_sql := 'create table xxxxxxx ..........';--创建表的语句省略,过程中创建表正常....
v_sql := v_sql || 'grant .....'; --此处是授权,
v_sql := v_sql || 'create synonym .....'; --此处创建同义词
Execute Immediate(v_sql);
exception
end xxx_p;
创建表的时候不报错,我加上创建同义词和授权语句,就进入异常了!!!
请大大们救命..... 展开
is
v_sql varchar2(4000);
begin
v_sql := 'create table xxxxxxx ..........';--创建表的语句省略,过程中创建表正常....
v_sql := v_sql || 'grant .....'; --此处是授权,
v_sql := v_sql || 'create synonym .....'; --此处创建同义词
Execute Immediate(v_sql);
exception
end xxx_p;
创建表的时候不报错,我加上创建同义词和授权语句,就进入异常了!!!
请大大们救命..... 展开
4个回答
展开全部
分开处理 3句语句 需要用分号分割 而execute immediate 中加分会报错
追问
这些语句,我之前也有试过分3次来执行,可是还是一样的....执行到创建同义词,或者授权就翘了...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
begin
execute immediate '....';
execute immediate '....';
execute immediate '....'
end ;
execute immediate '....';
execute immediate '....';
execute immediate '....'
end ;
更多追问追答
追问
这个方式我也试过了...
追答
前面2句没有问题吧,后面一句是否要带上用户名前缀呢?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
execute immediate '....';
execute immediate '....';
execute immediate '....'
end ;
execute immediate '....';
execute immediate '....'
end ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询