当我尝试使用ODP.NET执行create procedure时,返回ORA-24344: success with compilation error。但是,当我在SQL Developer中运行相同的语句时,它编译成功。有人知道我需要修改什么才能编译我的过程吗?是字符集问题吗?
我使用的是Oracle10gExpress、.NET 3.5SP1和ODP.NET 2.111.7.20 (来自Oracle.DataAccess.dll的版本)
[TestMethod]
public void OdpNet_CreateProcedure()
{
ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["ODP.NET"];
using (var con = new OracleConnection(settings.ConnectionString))
{
con.InfoMessage += new OracleInfoMessageEventHandler(con_InfoMessage);
con.Open();
var cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = @"
CREATE OR REPLACE PROCEDURE TABLE1_GET
(
P_CURSOR OUT SYS_REFCURSOR
)
IS
BEGIN
OPEN P_CURSOR FOR
SELECT *
FROM TABLE1;
END;";
cmd.ExecuteNonQuery(); // ORA-24344: success with compilation error
cmd.CommandText = @"ALTER PROCEDURE TABLE1_GET COMPILE";
cmd.ExecuteNonQuery(); // ORA-24344: success with compilation error
}
}
void con_InfoMessage(object sender, OracleInfoMessageEventArgs eventArgs)
{
System.Diagnostics.Debug.WriteLine(eventArgs.Message);
}发布于 2010-05-05 09:47:53
解决方案是:
cmd.CommandText = cmd.CommandText.Replace("\r\n", "\n");发布于 2010-05-05 08:15:53
执行SELECT * FROM USER_ERRORS命令,您应该会看到记录为错误的内容。可能会有一些奇怪的人物潜入..
PS。在应用程序中创建过程似乎很奇怪。
https://stackoverflow.com/questions/2769561
复制相似问题