Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Oracle的ODBC驱动程序:语法错误或访问冲突_C#_Oracle10g_Odbc - Fatal编程技术网

C# Oracle的ODBC驱动程序:语法错误或访问冲突

C# Oracle的ODBC驱动程序:语法错误或访问冲突,c#,oracle10g,odbc,C#,Oracle10g,Odbc,我有一个非常简单的Oracle SP CREATE OR REPLACE procedure DEV.SL_CLOB_TEST(numId IN PLS_INTEGER,id IN PLS_INTEGER, strText IN CLOB) as begin insert into test_table values (numId,id, strText, sysdate, user); end; 我有一个客户端.Net 4.0代码来使用上面的SP static void Ma

我有一个非常简单的Oracle SP

CREATE OR REPLACE procedure DEV.SL_CLOB_TEST(numId IN PLS_INTEGER,id IN PLS_INTEGER, strText IN CLOB)
as
begin
    insert into test_table values (numId,id, strText, sysdate, user);
end;
我有一个客户端.Net 4.0代码来使用上面的SP

    static void Main(string[] args)
    {
        string connectionString = "Driver={Microsoft ODBC for Oracle};Server=server;Uid=username;Pwd=password";
        var connection = new OdbcConnection(connectionString);
        connection.Open();

        IDbCommand command = connection.CreateCommand();

        command.CommandText = "{call SL_CLOB_TEST(?,?,?)}";
        command.CommandType = CommandType.StoredProcedure;

        OdbcParameter parameter1 = new OdbcParameter("NUMID", OdbcType.Int);
        parameter1.Value = 123;
        parameter1.Direction = ParameterDirection.Input;
        command.Parameters.Add(parameter1);

        OdbcParameter parameter2 = new OdbcParameter("ID", OdbcType.Int);
        parameter2.Value = 234;
        parameter2.Direction = ParameterDirection.Input;
        command.Parameters.Add(parameter2);

        OdbcParameter parameter3 = new OdbcParameter("STRTEXT", OdbcType.VarChar);
        parameter3.Value = getClob();
        parameter3.Direction = ParameterDirection.Input;
        command.Parameters.Add(parameter3);

        command.ExecuteNonQuery();
    }

    private static string getClob()
    {
        return new string('a', 10);
    }
}
当我运行它时,我得到了错误[42000][Microsoft][ODBC driver for Oracle]语法错误或访问冲突,整个调用堆栈是

System.Data.Odbc.OdbcException未经处理消息=错误[42000] [Microsoft][ODBC驱动程序for Oracle]语法错误或访问冲突 Source=msorcl32.dll错误代码=-2146232009堆栈跟踪: 在System.Data.Odbc.OdbcConnection.HandleErrorOdbcHandle hrHandle中,RetCode RetCode 位于System.Data.Odbc.OdbcCommand.ExecuteReaderObjectCommandBehavior 行为、字符串方法、布尔needReader、对象[]方法参数、, SQL_API odbcApiMethod 位于System.Data.Odbc.OdbcCommand.ExecuteReaderObjectCommandBehavior 行为、字符串方法、布尔值读取器 位于System.Data.Odbc.OdbcCommand.ExecuteOnQuery 在D:\Temp\ConsoleApplication1\ConsoleApplication1\Program.cs中的ConsoleApplication1.Program.MainString[]参数处:第32行 在System.AppDomain.\u nexecutateAssemblyRuntimeAssembly程序集中,字符串[]args 在System.AppDomain.ExecuteAssemblyString assemblyFile中,证据assemblySecurity,字符串[]args 位于Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly 在System.Threading.ThreadHelper.ThreadStart_ContextObject状态下 位于System.Threading.ExecutionContext.RunExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔值 ignoreSyncCtx 位于System.Threading.ExecutionContext.RunExecutionContext ExecutionContext,ContextCallback回调,对象状态 在System.Threading.ThreadHelper.ThreadStart InnerException中:


这里的错误信息非常不清楚是什么错了。有人知道我应该研究什么吗?

我做了一些其他测试,简单地将SP中的数据类型从CLOB更改为varchar2,代码的工作限制是我最多可以向SP发送31.75K字符串大小