首页 文章

使用C#创建Oracle过程

提问于
浏览
0

我正在使用C#创建过程

str = @"create or replace procedure awad
                        (O_MSG          OUT    VARCHAR2)
                        is
                        begin
                        O_MSG:='Executed Awad';
                        end;
                        ";
store_cmd = new OracleCommand(str, store_con);
store_cmd.ExecuteNonQuery();

从我的代码运行这个没有错误但该过程创建为无效,当我在Toad中编译它时它显示以下错误

程序08903.AWAD在线:1 PLS-00103:当期望下列之一时遇到符号“”(;;使用编译的包装外部确定性parallel_enable流水线作为集群压缩顺序使用authid符号“”被忽略 .

如果我复制相同的代码并在Toad编辑器中运行它获得编译没有任何错误

2 回答

  • 1

    当我上次使用Oracle时(虽然它就像10年前一样),这些错误通常会因为SQL中的CRLF而发生 . 尝试

    str = @"create or replace procedure awad
                        (O_MSG          OUT    VARCHAR2)
                        is
                        begin
                        O_MSG:='Executed Awad';
                        end;
                        ".Replace("\r\n", "\n");
    

    (虽然我必须说,如果这是问题,他们不会在10年内解决这个问题是非常不起眼的) .

  • 0

    你应该用''(两个单引号)来逃避'(单引号) . 试试这段代码:

    str = @"create or replace procedure awad
                            (O_MSG          OUT    VARCHAR2)
                            is
                            begin
                            O_MSG:=''Executed Awad'';
                            end;
                            ";
                    store_cmd = new OracleCommand(str, store_con);
                    store_cmd.ExecuteNonQuery();
    

相关问题