我试图执行一个生成insert语句的查询,如:
select
'insert into MYTABLE (
ID,
COLUMN_A,
COLUMN_B)
values (' +
ID + ',' +
COLUMN_A + ',' +
COLUMN_B
as INSERTGENERATOR from MYTABLE;
但我有这个错误:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause:
*Action:
为什么?
我尝试使用||
代替+
和to_char
,但它没有改变。
答案 0 :(得分:2)
不要将行尾放在引号内。 ||
用于连接。
select
'insert into MYTABLE (ID, COLUMN_A, COLUMN_B) values (' ||
ID || ',' ||
COLUMN_A || ',' ||
COLUMN_B || ');'
as INSERTGENERATOR from MYTABLE;
答案 1 :(得分:2)
这有效:
SELECT
'INSERT INTO MYTABLE
(ID, COLUMN_A, COLUMN_B)
VALUES (' ||
ID || ',' ||
COLUMN_A || ','||
COLUMN_B || ');'
AS INSERTGENERATOR
FROM MYTABLE;
答案 2 :(得分:1)
使用管道“||”连接字符串文字时摆脱所有的痛苦等。只需使用最新的字符串文字功能 q'[]'
。
SQL> SELECT q'[insert into MYTABLE (
2 ID,
3 COLUMN_A,
4 COLUMN_B)
5 values ('ID', 'COLUMN_A','COLUMN_B')]'
6 AS INSERTGENERATOR
7 FROM DUAL
8 /
INSERTGENERATOR
-------------------------------------------
insert into MYTABLE (
ID,
COLUMN_A,
COLUMN_B)
values ('ID', 'COLUMN_A','COLUMN_B')
SQL>
干净,不是吗?