Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
Asp.net 如何在SQL输出参数中打印消息_Asp.net_Sql_Sql Server_Stored Procedures_Output Parameter - Fatal编程技术网

Asp.net 如何在SQL输出参数中打印消息

Asp.net 如何在SQL输出参数中打印消息,asp.net,sql,sql-server,stored-procedures,output-parameter,Asp.net,Sql,Sql Server,Stored Procedures,Output Parameter,我有一个如下所示的存储过程。如何在我的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 C

我有一个如下所示的存储过程。如何在我的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         

您可以按如下方式使用print

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();

如果要获取[@errormessage]并将其打印到ASPX页面,则需要使用参数direction.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 


我执行了您的代码,但sql异常是这样抛出的:“过程或函数'ItemMasterIns'需要参数'@ErrorMsg',但未提供参数”。请帮助我