代码如下:
function deleteSingleRecord(tableName varchar2,uuid varchar2) return integer is
--根据唯一号uuid在表tableName中删除一条记录。如果成功返回,不成功返回0
p_str varchar2(500);
begin
p_str := 'delete from ' || tableName|| ' where projectid='||uuid;
execute immediate p_str;
return 1;
exception /*如果发生异常*/
WHEN OTHERS THEN
RAISE;
return 0;/*失败*/
end;
为什么会出错
function deleteSingleRecord(tableName varchar2,uuid varchar2) return integer is
--根据唯一号uuid在表tableName中删除一条记录。如果成功返回,不成功返回0
p_str varchar2(500);
begin
p_str := 'delete from ' || tableName|| ' where projectid='||uuid;
execute immediate p_str;
return 1;
exception /*如果发生异常*/
WHEN OTHERS THEN
RAISE;
return 0;/*失败*/
end;
为什么会出错
解决方案 »
- 运行vipca时报exception thread main error
- oracle列转行的问题(在线等)
- oracle 安裝问题,请高手解决
- 请问在存储过程使用游标时运行效率通常怎么样?
- liunx系统下如何建立一个新的oracle用户
- sqlserver 转成oracle 问题 在线等
- 再线急等 !!!oracle 用netca配置本地命名并测试 报错 ORA-000604 ORA-01756
- oracle 数据库里如何实现先查询表B里的记录是否已经在表A中存在,如果存在的就update,不存在的就insert。
- 关于IMP无反映?
- 根据表数据动态拼接查询语句
- ORACLE查询表和序列问题
- Help!获得销量增加的门店的storeid
begin
raise;
return 0;
end;
return 1;
insert ....;
return 0;
语法上是不允许的,因为前面已经return过了,就跟你在开发语言中一样,函数或方法中加连续的两个return而没有if、else是不会被编译通过的。
要这样写: ' where projectid= '
p_str := 'delete from ' || tableName|| ' where projectid='||uuid;
改为
p_str := 'delete from ' || tableName|| ' where projectid= '''||uuid||'''';
execute immediate 'delete from ' || tableName|| ' where projectid=:1' using uuid;
function deleteSingleRecord(tableName varchar2,uuid varchar2,limit integer) return integer其中limit限定删除的最多的记录个数。那上面的delete语句怎么写呢?
前面只有3个,因为最外面的两个的第一个在前面。
for i in 1..limit loop
p_str := 'delete from ' || tableName|| ' where projectid='||uuid;
execute immediate p_str;
end loop;
delete 后 commit 记录自然已经被删除。
你的 "彻底从数据库中清除" 和普通的 delete , commit 有什么区别?