INSERT 中含有单引号的问题

lightblue911 2008-10-24 01:49:06
在存储过程中利用游标取表a,然后部分字段处理后,insert到表b
表a中有个varchar2字段,某一条记录里面的一个字段里面内容为='0',然后insert时报错。
因为该字段中含有单引号,请问怎么将其放入表b中去。
='0'已经利用游标放入变量m中,insert的语句是利用动态语句实现的。
Str_Sql:='';
Execute Immediate Str_Sql;
我只知道如果是insert固定内容,一条的话,可以通过'变为''来处理,我这里动态语句里面怎么对变量来处理呢。
replace这个函数在oracle里面也只能用'啊。
谢谢个大虾了,小弟谢过先。
...全文
293 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sten 2008-10-24
  • 打赏
  • 举报
回复
告诉你一个方法:
insert into tablename values('&a');
执行后在弹出的对话框里输入值,试试你就明白要怎么写了.
vc555 2008-10-24
  • 打赏
  • 举报
回复
如果m还需拼接别的字符,就n:=m||xxx就行了。
vc555 2008-10-24
  • 打赏
  • 举报
回复
如果想用动态SQL,也可这样作:
OPER@TL>
1 declare
2 str_sql varchar2(100);
3 m varchar2(30);
4 begin
5 m:='=''0''';
6 str_sql:='insert into test values(:1)';
7 execute immediate str_sql using m;
8 end;
9 /

PL/SQL procedure successfully completed.

OPER@TL>select * from test;

AAA
------------------------------
='0'

OPER@TL>


lightblue911 2008-10-24
  • 打赏
  • 举报
回复
谢谢楼主三位的答复,这个变量是我从表a中取某一条记录时其中的一个字段,它就是’='0'‘这个中文单引号中间的内容,且其是随机的,不知道什么时候出现。由于我是使用的动态语句,所以拼接出来遇到的这个问题。
2楼高人的方法可以实验下,谢谢了。
不知道还有没有其他的解决方法
sten 2008-10-24
  • 打赏
  • 举报
回复
你的变量要设成:
m := '''a''';
也就是变量本身应该是完整的字符形式.
sleepzzzzz 2008-10-24
  • 打赏
  • 举报
回复
Execute Immediate 'insert into test values(:1,:2)' using 变量A,变量B;
BlueskyWide 2008-10-24
  • 打赏
  • 举报
回复

/--try:

select to_number('0')+8 from dual;



[Quote=引用楼主 lightblue911 的帖子:]
在存储过程中利用游标取表a,然后部分字段处理后,insert到表b
表a中有个varchar2字段,某一条记录里面的一个字段里面内容为='0',然后insert时报错。
因为该字段中含有单引号,请问怎么将其放入表b中去。
='0'已经利用游标放入变量m中,insert的语句是利用动态语句实现的。
Str_Sql:='';
Execute Immediate Str_Sql;
我只知道如果是insert固定内容,一条的话,可以通过'变为''来处理,我这里动态语句里面怎么对变…
[/Quote]

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧