Очень просто, я вызываю процедуру для получения первичного ключа из одной таблицы, а затем сохраняю ключ в переменной, чтобы затем использовать его для вставки в другую таблицу, которая нужна внешний ключ. Переменная - это то, что я ожидаю, но когда я ее использую, она ничего не возвращает.SQL Server: используйте переменную bigint в хранимой процедуре
После попытки смотреть на него, это, кажется, что его проблема с пунктом WHERE
и используя значение переменной
DECLARE @ClientId bigint;
SELECT *
FROM Testing.dbo.Client
WHERE ClientID = @ClientId
@ClientId
является 2
Существует значение 2 для а клиент ID в таблице
Когда я запускаю это я получаю результат я ожидаю
select *
from Testing.dbo.Client
where ClientID = 2
Это где он получает набор
DECLARE @ClientId int;
EXECUTE @ClientId = Testing.dbo.GetClientID @ClientName;
Где GetClientID является следующая
USE Testing
GO
CREATE PROCEDURE GetClientId
@ClientName nvarchar(50)
AS
SELECT ClientID FROM Testing.dbo.Client WHERE ClientName = @ClientName
GO
Разработал немного больше сейчас, поэтому ClientId не получает устанавливается после вызова ргос
где/как вы установите значение @ClientId? Потому что в вашем фрагменте вы только объявляете его, а не присваиваете значение. –
Хотя вы можете инициализировать в 'declare', как в ответе ниже, вы обычно используете' set', как в 'set @ClientId = 2;'. Фактически старые версии SQL Server не позволяют выполнять встроенную инициализацию. – shawnt00