Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 生成insert语句的查询:无效数字_Sql_Oracle - Fatal编程技术网

Sql 生成insert语句的查询:无效数字

Sql 生成insert语句的查询:无效数字,sql,oracle,Sql,Oracle,我试图执行一个生成inserts语句的查询,如下所示: 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 -

我试图执行一个生成inserts语句的查询,如下所示:

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:
为什么??
我试着用
|
代替
+
,用
改为
,但它没有改变。

不要把行尾放在引号内。而
|
用于连接

select 
  'insert into MYTABLE (ID, COLUMN_A, COLUMN_B) values (' ||
    ID || ',' ||
    COLUMN_A || ',' ||
    COLUMN_B || ');'
as INSERTGENERATOR from MYTABLE;

不要把行尾放在引号内。而
|
用于连接

select 
  'insert into MYTABLE (ID, COLUMN_A, COLUMN_B) values (' ||
    ID || ',' ||
    COLUMN_A || ',' ||
    COLUMN_B || ');'
as INSERTGENERATOR from MYTABLE;
这项工作:

SELECT
  'INSERT INTO MYTABLE 
  (ID, COLUMN_A, COLUMN_B)
   VALUES (' || 
    ID || ',' ||
    COLUMN_A || ','||
    COLUMN_B || ');'
AS INSERTGENERATOR 
FROM MYTABLE;

这项工作:

SELECT
  'INSERT INTO MYTABLE 
  (ID, COLUMN_A, COLUMN_B)
   VALUES (' || 
    ID || ',' ||
    COLUMN_A || ','||
    COLUMN_B || ');'
AS INSERTGENERATOR 
FROM MYTABLE;

摆脱使用管道“| |”等连接字符串文字时的所有痛苦。只需使用最新的字符串文字功能
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>

整洁,不是吗?

摆脱使用管道“| |”等连接字符串文字的所有痛苦。只需使用最新的字符串文字功能
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>

整洁,不是吗?

也许你错过了结尾“)”和“;”?或者只是它们没有显示在示例上?@甜瓜是的,这是示例,对不起:X这可能会有帮助吗?:只需使用简单的字符串文字技巧,q'[]',请参见我在答案中的演示。也许你错过了结尾“')”和“;”?或者只是它们没有显示在示例上?@甜瓜是的,这是示例,对不起:X这可能会有帮助吗?:只要使用简单的字符串文字技术,q'[],请参见我在答案中的演示。
ID
COLUMN\u A
COLUMN\u B
应该是
MYTABLE
中的值,而不是那些文字?在这种情况下,它们必须连接起来?(虽然我总体上喜欢引用的语法;只是不确定它在这里是否有效……)我同意。刚刚意识到这些是列名而不是文字。在这种情况下,必须连接列名。或许,OP会发现新的字符串文字技术在他想要构建复杂的动态字符串时非常方便:-),顺便说一下,感谢您指出。当然,
ID
COLUMN\u A
COLUMN\u B
应该是
MYTABLE
中的值,而不是那些文字?在这种情况下,它们必须连接起来?(虽然我总体上喜欢引用的语法;只是不确定它在这里是否有效……)我同意。刚刚意识到这些是列名而不是文字。在这种情况下,必须连接列名。也许,OP会发现新的字符串文字技术在他想要构建复杂的动态字符串时非常方便:-),顺便说一句,谢谢你指出了这一点。