使用Oracle.ManagedAccess使用存储过程执行内联语句

时间:2018-12-10 14:38:47

标签: c# .net oracle plsql oracle12c

StringBuilder sql_statement  = new StringBuilder();

sql_statement.Append("sampleStoreproc(null, 1); ");
sql_statement.Append("SELECT 'Y' FROM myTable ");
sql_statement.Append("WHERE column1 = null AND column2 = 1 ");

DataAccessObject.ExecuteReader(
    connectionString, 
    CommandType.Text, 
    sql_statement.ToString());

它抛出了我错误:

  

ORA-0090无效的SQL语句

我已经尝试在语句的最后添加;分号,但是它不起作用。

我复制了整个文本,并将其完美地放入SQL Developer。

1 个答案:

答案 0 :(得分:2)

在您的第一条语句中,您正在调用存储过程。更改为:

sql_statement.Append("execute sampleStoreproc(null, 1); ");

此外,建议在最后一行的末尾添加分号。

编辑:尝试将两个语句都放在begin...end;块中:

sql_statement.Append("begin");
sql_statement.Append("  execute sampleStoreproc(null, 1);");
sql_statement.Append("  SELECT 'Y' FROM myTable");
sql_statement.Append("  WHERE column1 = null AND column2 = 1;");
sql_statement.Append("end;");