从存储过程 C# 返回字符串

本文关键字:字符串 返回 存储过程 | 更新日期: 2023-09-27 18:32:23

我写了一个存储过程:

USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [database table]
    @StoreNum INT,
    @CustomerID INT,
    @r VARCHAR(100) OUTPUT
AS
BEGIN
    Select @r = Notes FROM [Database table]
    WHERE CustomerID = @CustomerID 
    AND StoreNumber = CAST(@StoreNum AS NVARCHAR(10))
END

当我在 SQL Server 管理工作室中运行此存储过程时,@r返回我期望的字符串。

但是,使用下面的以下 C# 代码,我收到错误:"无法从 int 转换为字符串"。

            SqlParameter param4 = new SqlParameter("@StoreNum", storeaudit.StoreNumber);
            SqlParameter param5 = new SqlParameter("@CustomerID", "9");
            SqlParameter param7 = new SqlParameter("@r", "");
            param5.SqlDbType = System.Data.SqlDbType.Int;
            param7.Direction = System.Data.ParameterDirection.Output;
            var NoteMan = db.Database.ExecuteSqlCommand("sp_GetNotesData @StoreNum, @CustomerID, @r", param4, param5, param7);
            String managers = param7.Value.ToString();
            System.Console.WriteLine(param7.Value);

任何帮助将不胜感激,谢谢

更新 - 将输出和 sqltype 添加到参数中,现在字符串管理器返回 "。

从存储过程 C# 返回字符串

您必须更改 2 件事:

参数5 值必须int

设置输出方向param7

SqlParameter param4 = new SqlParameter("@StoreNum", storeaudit.StoreNumber);
SqlParameter param5 = new SqlParameter("@CustomerID", 9);
SqlParameter param7 = new SqlParameter("@r", "");
param7.Direction = System.Data.ParameterDirection.Output;

> 不应获取存储过程的返回值;应获取结果集。

试试这个:

string str = db.Database.SqlQuery<string>("sp_GetNotesData @StoreNum, @CustomerID, @r", param4, param5, param7).First();