Как использовать результат хранимых процедур в той же хранимой процедуре для другой функции
Я создал две таблицы
tbl1:
CREATE TABLE [dbo].[tbl1]
(
[Costumer ID] [INT] NOT NULL,
[Name of the Costumer] [NVARCHAR](50) NOT NULL,
[Contact Number 1] [NCHAR](11) NULL,
[Contact Number 2] [NCHAR](11) NOT NULL,
[Email Id] [NVARCHAR](50) NULL,
[Address] [NVARCHAR](1000) NOT NULL,
[Dust] [NUMERIC](18, 0) NOT NULL,
[M.sand] [NUMERIC](18, 0) NOT NULL,
[6MM] [NUMERIC](18, 0) NOT NULL,
[10MM] [NUMERIC](18, 0) NOT NULL,
[40MM] [NUMERIC](18, 0) NOT NULL,
[Bolders] [NUMERIC](18, 0) NULL
) ON [PRIMARY]
GO
tbl2:
CREATE TABLE [dbo].[tbl2]
(
[DCN] [INT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Party] [NVARCHAR](50) NULL,
[Material] [NVARCHAR](50) NULL,
[Rate] [NVARCHAR](4000) NULL,
CONSTRAINT [UK_tbl_intedrlink_dcno]
PRIMARY KEY CLUSTERED ([DCN] ASC)
) ON [PRIMARY]
GO
и создал хранимую процедуру как пара
CREATE PROCEDURE [dbo].[sp1]
@mat NVARCHAR(1000) = NULL,
@party NVARCHAR(1000) = NULL
AS
BEGIN
DECLARE @sql NVARCHAR(4000);
DECLARE @params NVARCHAR(4000);
DECLARE @rate NVARCHAR(1000);
SET @sql ='select ['+@mat+'] from tbl1'+ ' where [Name of the Costumer] = @party' set @params = '@party nvarchar (1000)' exec sp_executesql @sql, @params,@party= @party
INSERT INTO tbl2([Party], [Material], rate)
SELECT @party, @mat, @rate
END
Когда я выполняю хранимую процедуру, я хочу вставить значения в tbl2
, который направлен из tbl
,
Но когда я выполняю хранимую процедуру, я получаю результат следующим образом
В tbl2
, rate
столбец добавляется как ноль, где я хотел бы получить результат sp1
(хранимая процедура) и вставьте значение в rate
колонка.
Я не поставил @rate
к значению, я хочу установить результат exec sp_executesql
как @rate
значение
Кто-нибудь может помочь решить проблему?
1 ответ
CREATE PROCEDURE [dbo].[sp1]
@mat NVARCHAR(1000) = NULL,
@party NVARCHAR(1000) = NULL
AS
BEGIN
DECLARE @sql NVARCHAR(4000);
DECLARE @params NVARCHAR(4000);
DECLARE @rate NVARCHAR(1000);
SET @sql ='select @rate = ['+@mat+'] from tbl1'+ ' where [Name of the Costumer] = @party'
SET @params = '@party nvarchar (1000), @rate NVARCHAR(1000) OUTPUT'
EXEC sp_executesql @sql, @params,@party= @party,@rate = @rate OUTPUT
INSERT INTO tbl2([Party], [Material], rate)
SELECT @party, @mat, @rate
END
Вы можете добавить еще один параметр в sp_executesql
хранимая процедура.
подобно @rate
как OUTPUT
параметр, и вы получите возвращаемое значение из выполненной хранимой процедуры, чтобы направить в вашу объявленную переменную.
Надеюсь, это поможет.