我有一个如下所示的存储过程。如何在我的aspx页面的输出参数@ErrorMsg
中打印消息。
ALTER PROC [dbo].[ItemMasterIns]
(
@ItemCode VARCHAR(30),
@ItemDesc VARCHAR(100),
@ErrorMsg VARCHAR(200) OUTPUT
)
AS
BEGIN
IF EXISTS ( SELECT 'X' FROM [DataBase].[dbo].[Table] WHERE Code= @Code )
BEGIN
SET @ErrorMsg = 'GIVEN CODE EXIST!'
RETURN 0
END
ELSE
BEGIN
INSERT INTO [DataBase].[dbo].[Table]([Code], [Descr])
VALUES (@Code, @Desc)
END
END
答案 0 :(得分:1)
如果你想获得[@errormessage]并在ASPX页面上打印,那么你需要使用 ParameterDirection.Output
根据你的评论,我写了一个完整的代码并在我的本地测试它,它按预期工作。请再试一次。
using System;
using System.Data;
using System.Data.SqlClient;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Program.RunSPWithParameterOutput();
}
public static void RunSPWithParameterOutput()
{
string PredefinedConnectionString = "Data Source=localhost;Initial Catalog=Adventure;Integrated Security=SSPI";
using (SqlConnection conn = new SqlConnection(PredefinedConnectionString))
using (SqlCommand cmd = new SqlCommand("dbo.usp_ItemMasterIns", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
// set up the parameters
cmd.Parameters.Add("@ItemsCode", SqlDbType.VarChar, 30);
cmd.Parameters.Add("@ItemsDesc", SqlDbType.VarChar, 30);
cmd.Parameters.Add("@ErrorMessage", SqlDbType.VarChar, 200).Direction = ParameterDirection.Output;
// set parameter values
cmd.Parameters["@ItemsCode"].Value = "test";
cmd.Parameters["@ItemsDesc"].Value = "test";
// open connection and execute stored procedure
conn.Open();
cmd.ExecuteNonQuery();
// read output value from @ErrorMessage
string ErrorMessage = cmd.Parameters["@ErrorMessage"].Value.ToString();
Console.WriteLine(ErrorMessage);
conn.Close();
}
}
}
}
部署在我本地的测试商店程序。
create procedure usp_ItemMasterIns (@ItemsCode varchar(100),
@ItemsDesc varchar(30),
@ErrorMessage varchar(200) output
)
as
begin
set @ErrorMessage='test error message'
end
答案 1 :(得分:0)
您可以使用以下打印
select * from sysobjects
PRINT 'Just selected * from sysobjects'
您可以在输出参数中设置值并在C#上获取
这样的事情:
SqlCommand cmd = new SqlCommand("ItemMasterIns", cn);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameter parm=new SqlParameter("@ItemCode",SqlDbType.VarChar);
parm.Size=30;
parm.Direction =ParameterDirection.Input ;
cmd.Parameters.Add(parm);
SqlParameter parm2=new SqlParameter("@ItemDesc",SqlDbType.VarChar);
parm2.Size=100;
parm2.Direction =ParameterDirection.Input ;
cmd.Parameters.Add(parm2);
SqlParameter parm3=new SqlParameter("@ErrorMsg",SqlDbType.VarChar);
parm3.Size=200;
parm3.Direction =ParameterDirection.Output;
cmd.Parameters.Add(parm3);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
// Print the output value
Console.WriteLine(cmd.Parameters["@ErrorMsg"].Value);
Console.ReadLine();