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;

创建表的时候不报错,我加上创建同义词和授权语句,就进入异常了!!!
请大大们救命.....
展开
 我来答
loveyurui
2013-07-02 · TA获得超过6556个赞
知道大有可为答主
回答量:2892
采纳率:33%
帮助的人:990万
展开全部
这3个句子其实是独立的。你非要把它拼在一起。。。
我个人建议不这样做,
不过你非要这样做的话,注意在句子后面的分号后加上回车符
追问
我试试你说的那种方法
开始的时候,我也把3种是分开执行的.
追答
回车符是 chr(13)
换行符是 chr(10)
用回车符
如果还有问题,你就把整个句子贴出来 我看看
zmq518
2013-07-02 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:95.3万
展开全部
分开处理 3句语句 需要用分号分割 而execute immediate 中加分会报错
追问
这些语句,我之前也有试过分3次来执行,可是还是一样的....执行到创建同义词,或者授权就翘了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0319a0e
2013-07-02 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1151万
展开全部
begin
execute immediate '....';
execute immediate '....';
execute immediate '....'
end ;
更多追问追答
追问
这个方式我也试过了...
追答
前面2句没有问题吧,后面一句是否要带上用户名前缀呢?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a982582122
2017-10-30 · 超过223用户采纳过TA的回答
知道小有建树答主
回答量:340
采纳率:12%
帮助的人:318万
展开全部
execute immediate '....';
execute immediate '....';
execute immediate '....'
end ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式