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