c# - 如何在 C# 中执行具有多个外参数的存储过程
问题描述
CREATE PROCEDURE Proc_SelectDetails
@id int,
@Name varchar(50) out,
@RollNo varchar(50) out
AS
BEGIN
set @name = (select from table where id= @id)
set @RollNo = (select from table where id= @id)
End
我不能对 sp 进行任何更改。我必须在我的 C# 代码中使用这个 sp。如果我尝试在 Dataset 的帮助下调用 sp。获取数据集为空。即使 Datareader 也为空。这是正确的调用方法,以便我将在 C# 中获得输出参数值。
解决方案
只需创建一个连接、命令并根据需要添加您的参数 - 例如:
using (var connection = new SqlConnection(@"connection string..."))
{
connection.Open();
var command = new SqlCommand("Proc_SelectDetails", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("id", SqlDbType.Int);
command.Parameters["id"].Value = 234;
var name = command.Parameters.Add("Name", SqlDbType.VarChar, 50);
name.Direction = ParameterDirection.Output;
var rollNo = command.Parameters.Add("RollNo", SqlDbType.VarChar, 50);
rollNo.Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
Console.WriteLine(name.Value);
Console.WriteLine(rollNo.Value);
}
推荐阅读
- java - 需要帮助在 java 中创建文件
- python - 为什么python2.7和3.6中getsizeof()的结果不一样
- imagemagick - 将pdf转换为jpg文件时出现错误消息
- javascript - 如何通过定位内部 html 按钮标签“data-content”来自动淡化 popover()
- sql - BigQuery LEFT JOIN 是加倍值
- python - 尝试使用 BeautifulSoup4 抓取网页,然后它在中途停止
- maven - 如何重定向单元测试输出Maven
- elasticsearch - 无法找出 Elasticsearch Python API 中的序列化错误
- node.js - UnhandledPromiseRejectionWarning 的 NodeJS Stacktrace:错误:ETIMEDOUT
- javascript - 为什么广告拦截器会阻止 Blob?