2015-08-12 5 views
0

я следующие основные хранимой процедуры, которые возвращают значение VARCHARВозврат Varchar значение из хранимой процедуры

create proc myproc 
AS 
return 'SSS' 

Теперь, когда я называю эту хранимую процедуру с помощью следующего запроса

declare @ret varchAR(max) 
exec sp_executesql N'exec @ret =procc', 
N'@ret varchar(MAX) OUTPUT',@ret = @ret OUTPUT select @ret as result 

я получаю сообщение об ошибке следующего ошибка

Ошибка конверсии при преобразовании значения varchar 'SSS' в тип данных int.

Просьба помочь.

Благодаря

ответ

3

Хранимые процедуры в MS SQL Sever может вернуть только целое число.

Вместо этого вы хотите использовать выходной параметр?

CREATE PROC [myproc] 
    @output VARCHAR(3) OUTPUT 
AS 
    SET @output = 'SSS'; 
RETURN 0; 

Что вы могли бы назвать, как это,

DECLARE @output VARCHAR(3); 
EXEC [myproc] @output OUTPUT; 
SELECT @output; 

Или, может быть, вы бы предпочли, чтобы вернуть скалярную результирующий набор?

CREATE PROC [myproc] 
AS 
    SELECT 'SSS'; 
RETURN 0; 

который будет возвращать то же самое, просто выполняя,

EXEC [myproc]; 
+0

Как я буду называть этот зр, если он имеет параметр? –

1

Поскольку хранимые процедуры в MS SQL Sever может только возвращать целое число, попробуйте выбрать значение, а не возвращать его:

create proc myproc AS SELECT 'SSS' 
0

Имеются параметры выхода

create proc myproc 
(@value varchar(100) output) 
AS 
select @value='SSS' 

GO 

declare @ret varchAR(max) 
exec sp_executesql N'exec @ret =procc', 
N'@ret varchar(MAX) OUTPUT',@ret = @ret OUTPUT select @ret as result 
+0

Что такое 'outout'? Понятно, мой ответ, через 2 минуты, без объяснений. – Jodrell

+0

Выводится ошибка типа – Madhivanan

0

Если вы хотите вернуть значение из хранимой процедуры, вам необходимо объявить для него выходной параметр.

Надежда ниже код поможет вам

create proc myproc 
@outputvalue VARCHAR (16) output 
AS 
set @outputvalue='SSS' 
select @outputvalue