我写的存储过程有时会 RAISERROR()。 我通过实体框架执行它,如:
using( MyModelEntities conn = new MyModelEntities() ) {
conn.MyStoredProcedure(input_p, output_p);
}
存储过程:
create procedure dbo.MyStoredProcedure(
@input nvarchar(255),
@output int out
)
as
begin
...
RAISERROR (N'My Exception....', 10, 1);
...
end
go
有没有机会获取有关错误的信息?
答案 0 :(得分:3)
在sql server中,异常级别1到10是信息性的,不会将错误引发回应用程序。
将级别更改为11到16之间,以提高SP的错误。
答案 1 :(得分:2)
这可以放入try / catch并显示异常吗?或者也许你可以尝试进入调试模式?
答案 2 :(得分:0)
以下是我处理这个问题的方法:
create procedure dbo.MyStoredProcedure(
@input nvarchar(255),
@output text out
)
as
begin
...
SELECT @message = convert(varchar, getdate(), 108) + ': My Exception....'
SET @output = CAST(@message AS text) -- send message to c#/.net
RAISERROR(@message,0,1) WITH NOWAIT -- send message to SQL Server Management Studio
...
end
go
然后在C#/ EF方面:
public string CallMyStoredProcedure(string input)
{
var outputParameter = new ObjectParameter("output", typeof(string));
EntityContext.MyStoredProcedure(input, outputParameter);
return (string)outputParameter.Value;
}