SQL SERVER-获得存储过程的返回值和输出参数

本文介绍如何使用SQL Server存储过程进行记录插入,并通过C#应用程序调用这些存储过程。示例展示了两种不同的存储过程实现:一种返回插入记录的ID,另一种使用输出参数返回ID。同时,代码提供了C#中如何正确设置和调用这些存储过程的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALTER PROCEDURE [dbo].[InsertRecord] 
(
    @name nvarchar(100)
)
AS
BEGIN
    
    SET NOCOUNT ON;
    insert into MyTable(name) values(@name);
    return SCOPE_IDENTITY();
END

/***************************************************************************************************/

ALTER PROCEDURE [dbo].[InsertRecord2] 
(
    @name nvarchar(100),
    @id int output

)
AS
BEGIN    
    SET NOCOUNT ON;

    insert into MyTable(name) values(@name);
    select @id =SCOPE_IDENTITY();
END

/***************************************************************************************************/

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
    class Program
    {
        static void Main(string[] args)
        {
            string connStr = "server=.;database=mytest;uid=sa;pwd=Server2012";
            using (SqlConnection con = new SqlConnection(connStr))
            {
                SqlCommand cmd = new SqlCommand("InsertRecord", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.NVarChar));
                cmd.Parameters["@name"].Value = "hahheh";

                cmd.Parameters.Add(new SqlParameter("@return", System.Data.SqlDbType.Int));
                cmd.Parameters["@return"].Direction = System.Data.ParameterDirection.ReturnValue;

                con.Open();

                cmd.ExecuteNonQuery();
                object obj = cmd.Parameters["@return"].Value;
                Console.WriteLine(obj);

                SqlCommand cmd2 = new SqlCommand("InsertRecord2", con);
                cmd2.CommandType = System.Data.CommandType.StoredProcedure;
                cmd2.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.NVarChar));
                cmd2.Parameters["@name"].Value = "NNNNNN";
                cmd2.Parameters.Add(new SqlParameter("@id", System.Data.SqlDbType.Int));
                cmd2.Parameters["@id"].Direction = System.Data.ParameterDirection.Output;

                //con.Open();
                cmd2.ExecuteNonQuery();
                object obj2 = cmd2.Parameters["@id"].Value;
                Console.WriteLine(obj2);
            }
            Console.Read();
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值