使用executeNonquery创建Oracle序列



尝试使用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

理想情况下,我要做的是创建一个序列,其中启动值是列中的下一个可用值(因此2如果ID为1等(

(

,但我遇到了ORA-00900无效的SQL错误。这在SQL Developer和SQL Plus中正常运行,因此我知道这是有效的SQL。是只能在SQL开发人员和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);

最新更新