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