sql语句转义问题

傅小司 2012-07-18 10:09:48
这样的插入sql语句
insert into TB_SELF_CUSTOMER(N_BRANCH_ID,v_username)values('select CUST_ID from TB_CUST_INFO where CUST_NO=?','123'); 第一个引号的地方我想通过一个可变的值查询
select CUST_ID from TB_CUST_INFO where CUST_NO='?' 这样的,但是values里面的值也是要单引号的,那位可以告诉我,应该怎么写。
...全文
265 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
buryMyLove 2012-07-19
  • 打赏
  • 举报
回复
为啥都在说2楼呢……2楼虽然是对的,但是没必要放到代码段里吧。
在字符串中,两个单引号代表一个单引号字符,两端都用三个单引号就对了
'''1'''
最边上的单引号是字符串两端的单引号,中间的两个是字符串中的'
潇洒王子 2012-07-19
  • 打赏
  • 举报
回复
二楼正解
禅院小沙弥 2012-07-18
  • 打赏
  • 举报
回复
二楼的正解
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
SQL code

declare
yourval varchar2(20):='yourvalue';
begin
insert into TB_SELF_CUSTOMER(N_BRANCH_ID,v_username)
select CUST_ID,'123' from TB_CUST_INFO where CUST_NO=yourval;
end;
……
[/Quote]
正解
小德 2012-07-18
  • 打赏
  • 举报
回复
这样可以?
CREATE TABLE X1(ID VARCHAR2(20),SNAME VARCHAR2(20));
CREATE TABLE X2(ID VARCHAR2(20),SNAME VARCHAR2(20));
INSERT INTO X1 VALUES('0001','S0001');
INSERT INTO X1 VALUES('0002','S0002');
INSERT INTO X1 VALUES('0003','S0003');
INSERT INTO X1 VALUES('0004','S0004');
INSERT INTO X1 VALUES('0005','S0005');

DECLARE
v_id VARCHAR2(20):='0001';
BEGIN
INSERT INTO X2 VALUES((SELECT id FROM X1 WHERE id=v_id),'123');
END;

SELECT * FROM X2;
ID SNAME
0001 123
人生无悔 2012-07-18
  • 打赏
  • 举报
回复

declare
yourval varchar2(20):='yourvalue';
begin
insert into TB_SELF_CUSTOMER(N_BRANCH_ID,v_username)
select CUST_ID,'123' from TB_CUST_INFO where CUST_NO=yourval;
end;
/
ssqtjffcu 2012-07-18
  • 打赏
  • 举报
回复
SQL> --在字符串里两个单引号会转换成一个单引号
SQL> select 'select * from dual where ''1''=''1''' from dual;

'SELECT*FROMDUALWHERE''1''=''1
--------------------------------
select * from dual where '1'='1'
槑党--一缕风 2012-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code

SQL> --在字符串里两个单引号会转换成一个单引号
SQL> select 'select * from dual where ''1''=''1''' from dual;

'SELECT*FROMDUALWHERE''1''=''1
--------------------------------
select * from dual where '1'……
[/Quote]

up
smnzg 2012-07-18
  • 打赏
  • 举报
回复
insert into
TB_SELF_CUSTOMER(N_BRANCH_ID,v_username)
values
((select CUST_ID from TB_CUST_INFO where CUST_NO=?),'123')

17,377

社区成员

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

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