存储过程中使用 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里面 就不行了?
展开
 我来答
badkano
2013-08-14 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885373
团长

向TA提问 私信TA
展开全部
你最后一句

execute immediate 'DELETE from ' || LO_DEL || '';

from 和单引号中间要留个空格,你打印的那句是你上边的LO_SQL,你真正执行的execute那句跟你打印那句有个空格的区别

再说,你LO_SQL都赋值了
直接 execute immediate LO_SQL;就可以了啊
追问
execute immediate LO_SQL; 直接这样写的 话  编译不通过 报 pls-00381:表达式错误
追答

你,我给你调试

夜の城b5eca
2013-08-14 · TA获得超过159个赞
知道答主
回答量:66
采纳率:0%
帮助的人:68.4万
展开全部
execute immediate 'DELETE from' || LO_DEL || '';
这句话中,from后面应该加个空格吧
追问
原存储过程里有空格 的  还是不行。
追答
'DELETE from' || LO_DEL || ''

你把这个字符串打印出来看看呢,最起码你的语法是正确的,可能是字符串拼接出了问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苗而不秀色可餐
2019-07-04
知道答主
回答量:1
采纳率:0%
帮助的人:731
展开全部
LO_DEL 使用varchar2 定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jadilee
2013-08-14 · TA获得超过472个赞
知道小有建树答主
回答量:475
采纳率:40%
帮助的人:199万
展开全部
根据我的推车,你是不是没有指定数据库的名字,我记得我的函数 如果没有在对应的数据库下面执行,就不会正确执行.你试试写成 dataname.dbo.tablename 这样
追问
加了也不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式