Если вы хотите использовать ExecuteScalar
, ваш сохраненный процесс должен вернуть одну строку, один столбец из SELECT
:
ALTER PROCEDURE [dbo].[GetReason]
@Reason_Number nvarchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT Field1
FROM dbo.Reasons
WHERE Field1 LIKE @Reason_Number + '%';
END
, а затем ваш код должен прочитать это значение:
var returnedValue = cmd.ExecuteScalar();
и используйте его оттуда.Конечно, в этом случае вам также не нужен параметр OUTPUT в вашем коде C # ....
Слово предупреждения: что SELECT
в вашем хранимом процессе может потенциально вернутьнесколько рядов.Возможно, вы захотите добавить TOP 1
к вашему выбору - просто для безопасности:
SELECT TOP 1 Field1
FROM dbo.Reasons
WHERE Field1 LIKE @Reason_Number + '%';