ORACLE数据库存储过程,转义符问题

我要的存储过程的SQL语句是:
delete from new_report_data t,new_user_id u
where t.user_id_index=u.user_id_index
and u.user_id_name in
('46cb80f2d77ce8f66cfb989e64bc0b61','445cefe016ee6a0f55856e0cac86aff0',
'103af1d15234daba68adb990cd42dc89','1dee142a8f7c268a47ec85c420712961',
'c7140a97b0d12c5125d7d8709174cd58','b9231c759be355ec90efc2e487f4435a',
'badc5300a4283f9b707487591c939987','206096931dcf537976fbe141faef55f4')

下面我创建了一个存储过程,建立的时候没有语法错误,但执行的时候出现了错误,是转义符搞错了吗?怎么改?
create or replace procedure delete_new_report_data
as
sql_de1 varchar2(200);
begin
sql_de1:='delete from new_report_data t,new_user_id u
where t.user_id_index=u.user_id_index
and u.user_id_name in
(''46cb80f2d77ce8f66cfb989e64bc0b61'',''445cefe016ee6a0f55856e0cac86aff0'',
''103af1d15234daba68adb990cd42dc89'',''1dee142a8f7c268a47ec85c420712961'',
''c7140a97b0d12c5125d7d8709174cd58'',''b9231c759be355ec90efc2e487f4435a'',
''badc5300a4283f9b707487591c939987'',''206096931dcf537976fbe141faef55f4'')
';
EXECUTE IMMEDIATE sql_de1;
COMMIT;
end;

sql_de1 varchar2(200)  中 200之 太小了,超出delete 语句的长度,将其改为 sql_de1 varchar2(2000)

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-08
是你第三行变量的长度定义的不够长吧,改为500试一下
sql_de1 varchar2(500);

oracle 存储过程中有空格转意符“ ” ,执行时提示一个对话框,让...
先执行 set define off 然后再执行你那个 存储过程。

ORACLE 存储过程中的...是什么意思如下 ' || ''' || 'yyyy-mm-dd' |...
''' 四个单引号,第1,4个单引号是正常的单引号,第2个单引号是转义字符,第3个单引号,编译后想保留的单引号。最终目的 就是to_char(a.txntimestamp, 'yyyy-mm-dd') 这样的格式 这里头不是直接写sql文,而是用字符串拼接成新的sql字符串。

请问几个oracle存储过程语法的问题
1、包中用is和as是同等的,因为在SQL中只能用AS,而在PL\/SQL中可以用is,因兼容问题,所以PL\/SQL中也可以使用AS;2、放在begin外面,值得注意的是PL\/SQL是块状结构,所以变量都应该的申明部分定义,也就是begin外面;3、在函数、过程、包的申明部分定义变量时,可以不用Declare,但使用匿名程序时,...

oracle存储过程,出现符号":="被替换为number后继续的问题
先说你存储过程的问题,里边只有insert,然而没有commit;这样的后果是数据插入不成功,且会造成锁表 更改如下:create or replace procedure insertSysDate as begin insert into getSysDate values (sysdate);commit;end ;job的话这样创建:declare jobno number;begin dbms_job.submit( jobno, what ...

oracle数据库导出用户时,表数据没有乱码,但是包,存储过程,函数等存在乱 ...
你好,以下只是本人的猜测.1.创建数据或是包的工具不一样,他们的编码也会不太一样的.以前用SqlDBX望库里面添加过数据,在SqlDBX中查询,修改删除都没有任何问题.同时在pl\/sql中查询时没有问题的,但是做导出,修改的时候会有编码的问题产生.2.就是导出用户的工具问题 ...

oracle10g数据库中如果有一个存储过程执行出错(比如语法有问题),会影 ...
语法有问题程序编译都过不去,程序无法运行何来存储过程停掉?除非是逻辑错误或者数据异常引起错误。如果你加上了异常处理功能,可以捕捉到错误,不至于使程序停止运行。如果没有异常处理,程序一定会停止运行,并显示相关的错误信息。

oracle数据库调用存储过程
在应用程序中调用Oracle存储过程,需要根据所使用的编程语言(如Java)的语法进行操作。可以通过查阅相应语言的帮助文档找到具体的方法。如果是在Oracle数据库内部的其他存储过程中调用,直接使用存储过程名即可。传入相应的参数后,存储过程将被执行。在Oracle的命令行工具中调用存储过程,可以使用EXEC命令,其...

有关Oracle存储过程的相关问题
详细讲解有关Oracle存储过程的相关问题 在Oracle数据库中 数据表别名是不能加as的 例如 select a appname from appinfo a —— 正确 select a appname from appinfo as a —— 错误 注释 这可能是为了防止和Oracle数据库中的存储过程中的关键字as冲突的问题 在存储过程中 select某一字段时 后面...

oracle存储过程分页 java调用时候出现 无法转换为内部表示 什么问题
也没什么大问题,就是oracle的函数你用错了 to_char(参数,格式),比如to_char(1234,'0000'),to_char(sysdate,'YYYYMMDD')等,to_number(参数,格式),比如to_number(9999,'$9999.99'),to_number(99.99,'99')等

Oracle中存储过程和函数的区别
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。优 点:1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以...

相似回答
大家正在搜