я написал хранимую процедуру:Возвращение строки из хранимой процедуры C#
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 сервера, @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);
Любая помощь будет принята с благодарностью, спасибо
UPDATE - Добавлен вывод и SQLType к параметру и теперь струнные менеджеры возвращает «».
Dupe? http://stackoverflow.com/questions/290652/get-output-parameter-value-in-ado-net –
, когда вы используете выходной параметр типов строк, необходимо установить «размер» и направление. Вы задали направление, но не размер. если вы не задаете размер, вы можете получить только один символ из строки - я вижу обновление - вы ничего не получаете. Идем дальше и задаем размер –