Ich habe die folgende dynamische Abfrage, die ohne die WHERE
-Klausel funktioniert, die UNIQUEIDENTIFIER
erwartet.T-SQL: Wie benutzt man Parameter in dynamischem SQL?
Wenn ich es übergebe, bekomme ich kein Ergebnis. Ich versuchte CAST
und CONVERT
, aber kein Ergebnis. Ich könnte es falsch machen, kann jemand helfen?
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
Ich habe dies versucht, es funktioniert nicht, gibt mir den folgenden Fehler "Prozedur erwartet Parameter '@ Parameter' des Typs 'Ntext/Nchar/Nvarchar'." –
Machen Sie die Zeichenfolge NCHAR, indem Sie ein 'N' hinzufügen: EXECUTE sp_executesql @sql, N '@ p UNIQUEIDENTIFIER', ... –