使用 ExecuteNonQuery 创建 Oracle 序列
Create Oracle sequence using ExecuteNonQuery
尝试使用 ExecuteNonQuery 在 Oracle 中创建序列
SQL是
col a new_value SEQ
SELECT NVL(MAX(ID)+1,1) a FROM DBUSER.TABLENAME;
CREATE SEQUENCE DBUSER.SEQ_ACCOUNT
INCREMENT BY 1 START WITH &SEQ NOCACHE
理想情况下,我想要做的是创建一个序列,其中起始值是列中的下一个可用值(如果 ID 为 1 等,则为 2)
但我收到 ORA-00900 无效 SQL 错误。这 运行 在 SQL 开发人员和 SQL plus 中很好,所以我知道它是有效的 SQL。它是否只能在 SQL Developer 和 SQL Plus 中成为 运行?
col a new_value SEQ
仅适用于 Oracle 本机客户端,如 SQLPlus 或 SQLDeveloper。您应该使用其他方式来检索 NVL(MAX(ID)+1,1)
.
的结果
当然,使用 ExecuteNonQuery 可能会出现其他错误。没有实际代码很难说。
更新:
这是适合您的工作示例。它是通过在查询文本中使用匿名 PL-SQL 块制作的:
cmd.CommandText = "declare v_sql varchar2(255); begin select 'create sequence DBUSER.SEQ_ACCOUNT start with ' || NVL(MAX(t.ID)+1,1) || ' increment by 1 nocache' into v_sql from DBUSER.TABLENAME t; execute immediate v_sql; end;";
cmd.ExecuteOracleNonQuery(out os);
尝试使用 ExecuteNonQuery 在 Oracle 中创建序列
SQL是
col a new_value SEQ
SELECT NVL(MAX(ID)+1,1) a FROM DBUSER.TABLENAME;
CREATE SEQUENCE DBUSER.SEQ_ACCOUNT
INCREMENT BY 1 START WITH &SEQ NOCACHE
理想情况下,我想要做的是创建一个序列,其中起始值是列中的下一个可用值(如果 ID 为 1 等,则为 2)
但我收到 ORA-00900 无效 SQL 错误。这 运行 在 SQL 开发人员和 SQL plus 中很好,所以我知道它是有效的 SQL。它是否只能在 SQL Developer 和 SQL Plus 中成为 运行?
col a new_value SEQ
仅适用于 Oracle 本机客户端,如 SQLPlus 或 SQLDeveloper。您应该使用其他方式来检索 NVL(MAX(ID)+1,1)
.
当然,使用 ExecuteNonQuery 可能会出现其他错误。没有实际代码很难说。
更新:
这是适合您的工作示例。它是通过在查询文本中使用匿名 PL-SQL 块制作的:
cmd.CommandText = "declare v_sql varchar2(255); begin select 'create sequence DBUSER.SEQ_ACCOUNT start with ' || NVL(MAX(t.ID)+1,1) || ' increment by 1 nocache' into v_sql from DBUSER.TABLENAME t; execute immediate v_sql; end;";
cmd.ExecuteOracleNonQuery(out os);