使用ExecuteNonQuery创建Oracle序列

时间:2018-02-20 11:19:35

标签: sql oracle sequences

尝试使用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中运行?

1 个答案:

答案 0 :(得分:2)

col a new_value SEQ仅适用于SQLPlus或SQLDeveloper等Oracle本机客户端。您应该使用其他方法来检索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);