gpt4 book ai didi

oracle - 在 oracle 中将字符串作为查询运行

转载 作者:行者123 更新时间:2023-12-02 07:04:08 24 4
gpt4 key购买 nike

我在 Oracle 中遇到了一个小问题。我尝试创建一个序列,用于在已包含数据的表中生成 ID。我尝试使用以下匿名 block 。

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 变量的值,它会完美运行。我使用 SQL Developer 作为输入接口(interface)并在 11g r2 Oracle 服务器上工作。我发现类似的代码,其中“INCREMENT BY”参数是脚本生成的。有人可以解释我的错误吗?

最佳答案

当您立即执行时,您运行的命令末尾不应该有分号;这是 SQL Developer(和 SQL*Plus 以及其他客户端)中的命令分隔符,而不是 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;

这显示在 examples for plain SQL 中.只是为了让您感到困惑,如果您在动态 SQL 中使用 PL/SQL,您仍然需要适合 PL/SQL 本身的分号——尽管不是您用来执行的 /直接从客户端运行它。这显示在 other examples 中.

关于oracle - 在 oracle 中将字符串作为查询运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com