with ver tutorial stored procedimiento parametros example ejemplos ejemplo ejecutar crear con almacenado sql-server stored-procedures user-defined-types

tutorial - Cómo pasar udtt a un procedimiento almacenado en SQL Server Management Studio



stored procedure sql tutorial (1)

Tengo un SP prc_Foo_Delete que tiene la siguiente firma:

ALTER PROCEDURE [prc_Foo_Delete] @fooIds [int_udtt] READONLY, @deleteReason int, @comment nvarchar(512), @deletedBy nvarchar(128)

int_udtt se define como:

CREATE TYPE [int_udtt] AS TABLE( [Id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (IGNORE_DUP_KEY = OFF) )

Intenté llamar a este SP en Management Studio con el siguiente script:

DECLARE @return_value int EXEC @return_value = [prc_Foo_Delete] @fooIds = 3, @deleteReason = 2, @comment = N''asfdasdf'', @deletedBy = N''asdfa'' SELECT ''Return Value'' = @return_value GO

El error que recibí es: Operand type clash: int es incompatible con int_udtt. ¿Cómo paso un int o una lista de int para llamar a esta herramienta (sé cómo hacerlo en código pero no en Management Studio)?


¡Ya que ha definido su tipo definido por el usuario como un parámetro en el procedimiento almacenado, también necesita usar ese tipo definido por el usuario al llamar al procedimiento almacenado! No puedes simplemente enviar una sola INT lugar ...

Intenta algo como esto:

-- define an instance of your user-defined table type DECLARE @IDs [int_udtt] -- fill some values into that table INSERT INTO @IDs VALUES(3), (5), (17), (42) -- call your stored proc DECLARE @return_value int EXEC @return_value = [prc_Foo_Delete] @fooIds = @IDs, -- pass in that UDT table type here! @deleteReason = 2, @comment = N''asfdasdf'', @deletedBy = N''asdfa'' SELECT ''Return Value'' = @return_value GO