Mam następujące zapytanie dynamiczne, które działa poprawnie bez klauzuli WHERE
, która oczekuje UNIQUEIDENTIFIER
.T-SQL: Jak używać parametrów w dynamicznym SQL?
Kiedy przekazuję, nie otrzymuję wyniku. Próbowałem CAST
i CONVERT
, ale bez rezultatu. Może robię to źle, czy ktoś może pomóc?
CREATE PROCEDURE [dbo].[sp_Test1] /* 'b0da56dc-fc73-4c0e-85f7-541e3e8f249d' */
(
@p_CreatedBy UNIQUEIDENTIFIER
)
AS
DECLARE @sql NVARCHAR(4000)
SET @sql ='
DECLARE @p_CreatedBY UNIQUEIDENTIFIER
SELECT
DateTime,
Subject,
CreatedBy
FROM
(
SELECT
DateTime, Subject, CreatedBy,
ROW_NUMBER() OVER(ORDER BY DateTime) AS Indexing
FROM
ComposeMail
WHERE
CreatedBy = @p_CreatedBy /* <--- the problem is in this condition */
) AS NewDataTable
'
EXEC sp_executesql @sql
Próbowałem tego, to nie działa dając mi błąd śledzenia "Procedura oczekuje parametru" parametry @ "typu" ntext/nchar/nvarchar "." –
Utwórz ciąg NCHAR, dodając wyrażenie 'N': EXECUTE sp_executesql @sql, N '@ p UNIQUEIDENTIFIER', ... –