Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
在oracle中以查询方式运行字符串_Oracle_Sequence_Execute Immediate_Ora 06512 - Fatal编程技术网

在oracle中以查询方式运行字符串

在oracle中以查询方式运行字符串,oracle,sequence,execute-immediate,ora-06512,Oracle,Sequence,Execute Immediate,Ora 06512,我在甲骨文有点小问题。我尝试创建一个序列,用于在已经包含数据的表中生成ID。我尝试使用以下匿名块 declare y varchar2(2000); BEGIN SELECT 'CREATE SEQUENCE ID_SEQ MINVALUE 1 MAXVALUE 9999999999 START WITH ' || (max(ID)+1) || ' INCREMENT BY 1 CACHE 20;' INTO y FROM TEST_TABLE; --dbms_output.put_li

我在甲骨文有点小问题。我尝试创建一个序列,用于在已经包含数据的表中生成ID。我尝试使用以下匿名块

declare y varchar2(2000);
BEGIN
  SELECT 'CREATE SEQUENCE ID_SEQ MINVALUE 1 MAXVALUE 9999999999 START WITH ' || (max(ID)+1) || ' INCREMENT BY 1 CACHE 20;' INTO y FROM TEST_TABLE;
  --dbms_output.put_line(y);
  execute immediate y;
end;
我得到以下错误:

Error report:
ORA-00911: invalid character
ORA-06512: at line 5
00911. 00000 -  "invalid character"

如果我执行y变量的值,它就可以正常工作。我正在使用SQLDeveloper作为输入接口,并在11GR2Oracle服务器上工作。我发现在脚本生成“INCREMENT BY”参数的地方有类似的代码。有人能解释我的错误吗?

当您执行immediate时,您运行的命令末尾不应该有分号;这是SQLDeveloper(和、以及其他客户端)中的命令分隔符,而不是SQL语句本身的一部分

SELECT 'CREATE SEQUENCE ID_SEQ MINVALUE 1 MAXVALUE 9999999999 START WITH '
    || (max(ID)+1) || ' INCREMENT BY 1 CACHE 20' INTO y FROM TEST_TABLE;
如图所示。不过,为了让您感到困惑,如果您在动态SQL中使用PL/SQL,您仍然需要适合PL/SQL本身的分号——尽管不是直接从客户端运行它所使用的执行分号。如图所示