标题: 存储过程中 动态sql的 问题 [打印本页] 作者: Rawu 时间: 2005-08-30 01:54 标题: 存储过程中 动态sql的 问题 PREPARE <CURSORNAME>; FOR <CURSORSQLSTATMENT>; ;
OPEN <CURSORNAME>;;
....
FETCH ....
ls_stmt = 'DELETE FROM ' || ls_TABLENAME || ' WHERE CURRENT OF <CURSORNAME>;' ;
EXECUTE IMMEDIATE ls_stmt; -- 此处运行时报错
建立时没有报错。但在运行时说 <CURSORNAME>; 未定义。。之前已经定义并成功FETCH了。!
难道DELTE FROM ...WHERE CURRENT OF ... 的语法不能用于动态SQL ?
请赐教 THX作者: faceDragon 时间: 2005-08-30 18:37 标题: 存储过程中 动态sql的 问题 我这里测试了一下没有问题的,应该是你游标定义有不对吧。作者: Rawu 时间: 2005-08-30 21:51 标题: 存储过程中 动态sql的 问题 声明应该没有 问题啊 。 能正常 FETCH 和 用静态的 WHERE CURRENT OF 删除。但一用到 动态sql 就 出现 ‘游标未定义的错误’ 了作者: Rawu 时间: 2005-08-31 08:52 标题: 存储过程中 动态sql的 问题 你能说说你的coding吗? 我的大概 是这个样子 的
DECLARE CUR CURCOR FOR CC;
SET ls_CUR = '...'
PREPARE CUR FOR ls_CUR ;
OPEN CUR
FETCH ...
-- DELETE FROM XXX WHERE CURRENT OF CUR ; (成功)
ls_stmt = 'DELETE FROM ' || ls_TABLENAME || ' WHERE CURRENT OF <CURSORNAME>;' ;
EXECUTE IMMEDIATE ls_stmt; (失败)作者: faceDragon 时间: 2005-08-31 11:00 标题: 存储过程中 动态sql的 问题 你定义的游标的表与delete的表不是同一个吧?作者: Rawu 时间: 2005-08-31 23:21 标题: 存储过程中 动态sql的 问题 是同一个
其实就想实现一个 分段提交的 删除表的 存储过程