0
是否有可能在傳遞參數值之後打印Dynamic select語句。當我打印SELECT @ SQL時,它只給出沒有參數值的select語句。在下面的過程中,動態選擇語句在傳遞參數後沒有給出正確的輸出。但是當我直接將參數值傳遞給select語句時,它會給出正確的輸出。在我的下面的過程中,分割函數工作正常。如果語句不工作,則在 正常。值沒有傳遞給sql server中的動態查詢
CREATE TYPE TableVariable AS TABLE
(
id int identity(1,1),
field_ids INT,
value VARCHAR(MAX)
)
Alter PROCEDURE Testing
(
@TableVar TableVariable READONLY,
@Catalog_id INT
)
AS
Declare @maxPK INT
Declare @pk INT
Declare @fid INT
Declare @is_List SMALLINT
Declare @val VARCHAR(MAX)
Declare @field_Type VARCHAR(50)
Declare @Where VARCHAR(MAX)
Declare @SQL NVARCHAR(MAX);
Set @pk = 1
BEGIN
BEGIN TRY
SET NOCOUNT ON;
Select @maxPK = count(*) From @TableVar
SELECT @Catalog_id
Set @SQL = 'SELECT DISTINCT v1.entity_id from values v1 inner join listings l ON v1.entity_id = l.entity_id WHERE [email protected]_id'
While @pk <= @maxPK
BEGIN
SELECT @fid= field_ids FROM @TableVar where [email protected];
SELECT @val= value FROM @TableVar where [email protected];
SELECT @field_Type=type,@is_List=is_list FROM FIELD WHERE [email protected]
IF (@is_List = 0)
BEGIN
SET @SQL += ' and exists (select 1 from values v'+convert(varchar(15),@pk+1)+' where v1.entity_id = v'+convert(varchar(15),@pk+1)+'.entity_id and v'+convert(varchar(15),@pk+1)+'[email protected] and(value IN(SELECT val FROM spliting(@val,'',''))))'
SELECT @fid
END
else IF (@is_List = 1 OR @field_Type = 'xy')
BEGIN
SET @SQL += ' and exists (select 1 from values v'+convert(varchar(15),@pk+1)+' where v1.entity_id = v'+convert(varchar(15),@pk+1)+'.entity_id and v'+convert(varchar(15),@pk+1)+'[email protected] and(value in(@val)))'
SELECT @fid
END
Select @pk = @pk + 1
END
EXECUTE SP_EXECUTESQL @SQL, N'@Catalog_id int,@fid int,@val varchar(max)',@[email protected]_id,@[email protected],@[email protected]
SELECT @SQL
END TRY
BEGIN CATCH
END CATCH
END
DECLARE @DepartmentTVP AS TableVariable;
insert into @DepartmentTVP values(1780,'Smooth As Silk Deep Moisture Shampoo,Smooth As Silk Deeper Moisture Conditioner')
--insert into @DepartmentTVP values(1780,'Smooth As Silk Deeper Moisture Conditioner')
insert into @DepartmentTVP values(1782,'037-05-1129')
insert into @DepartmentTVP values(2320,'["fairtrade","usda_organic","non_gmo_verified"]')
SELECT * FROM @DepartmentTVP
EXEC Testing @DepartmentTVP,583
這是我原來的query.Values直接傳遞在query.It在程序返回values.But不是這樣。 從值v1內連接列表中選擇區別v1.entity_id l ON v1.entity_id = l.entity_id WHERE l.c_id = 583並存在(從v2選擇1,其中v1.entity_id = v2.entity_id和v2.field_id = 1780並且(值IN('平滑絲綢深層水分洗髮水','平穩絲綢深層水分調節劑')))和存在(從值v3中選擇1,其中v1.entity_id = v3.entity_id和v3.field_id = 2320和('[「fairtrade」,「usda_organic」,「non_gmo_verified」]'))) – Ram
打印@sql不工作。它沒有給出帶有參數值的select語句。 – Ram