存储过程中使用 execute immediate 报无效sql 但sql打印出来可以单独执行?
LO_DEL:=temp.monitertablename;LO_SQL:='DELETEfrom'||LO_DEL||'';dbms_output.put_line(L...
LO_DEL := temp.monitertablename;
LO_SQL := 'DELETE from ' || LO_DEL || '';
dbms_output.put_line(LO_SQL);
execute immediate 'DELETE from' || LO_DEL || '';
LO_SQL打印出来是 DELETE from DZJC_ALL_CASE_INDEX 为什么放到execute immediate里面 就不行了? 展开
LO_SQL := 'DELETE from ' || LO_DEL || '';
dbms_output.put_line(LO_SQL);
execute immediate 'DELETE from' || LO_DEL || '';
LO_SQL打印出来是 DELETE from DZJC_ALL_CASE_INDEX 为什么放到execute immediate里面 就不行了? 展开
4个回答
展开全部
execute immediate 'DELETE from' || LO_DEL || '';
这句话中,from后面应该加个空格吧
这句话中,from后面应该加个空格吧
追问
原存储过程里有空格 的 还是不行。
追答
'DELETE from' || LO_DEL || ''
你把这个字符串打印出来看看呢,最起码你的语法是正确的,可能是字符串拼接出了问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LO_DEL 使用varchar2 定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据我的推车,你是不是没有指定数据库的名字,我记得我的函数 如果没有在对应的数据库下面执行,就不会正确执行.你试试写成 dataname.dbo.tablename 这样
追问
加了也不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询