#sql #sql-server #concatenation
Вопрос:
SET @Result = '{ "host_name": "' @hostname '", "status": 15 }'
Не могли бы вы объяснить мне, что мы получаем со значением результата, пожалуйста? Если мы предположим, что имя хоста = «machine1».
Чтобы проверить это, я создал таблицу и хранимую процедуру и напечатал значение результата :
CREATE TABLE utilisateur
(
nom VARCHAR(100),
prenom VARCHAR(100),
age VARCHAR(5),
)
INSERT INTO utilisateur (prenom, nom, age)
VALUES
('Rébecca', 'Armand', 24)
go
CREATE PROCEDURE [sp_DB]
@hostname nvarchar(50),
@Result nvarchar(2000) OUTPUT
AS
select age as a from utilisateur where nom = 'Armand'
SET @hostname = 'machine1'
SET @Result = '{ "host_name": "' @hostname '", "a": 15 }'
print @Result
EXEC [sp_DB]@hostname ='machine1',@Result = 'test';
Но при выполнении не отображается содержимое результирующей переменной.
PS: я использую sqlfiddle.com / для выполнения кода
Комментарии:
1. при печати результатов вы хотите выбрать их для возврата в качестве результирующего набора из SP
2. Можете ли вы показать код, который фактически выполняет хранимую процедуру? Обратите внимание, что многие графические интерфейсы, такие как sqlfiddle и dbfiddle, не всегда будут отображать
3. Можете ли вы добавить ссылку на свой sqlfiddle?
4. Исправлен код, я добавил EXEC [sp_DB]
5. Это отлично работает в SSMS;
Ответ №1:
Вы должны определить выходную переменную в области видимости вызова процедуры и использовать ключевое слово OUTPUT для извлечения выходного значения. Так что, если вы сделаете это так, как:
declare @result_out nvarchar(2000)
EXEC [sp_DB]@hostname ='machine1',@Result=@result_out OUTPUT;
select @result_out as [Result]
Это сработает.