OUTPUT de tipo TABLE

15/06/2004 - 09:57 por David | Informe spam
Hola a todos,

Se puede pasar como parametro OUTPUT una variable de tipo
TABLE en un PROCEDURE??


CREATE PROCEDURE sp_pruebatable @vartable table(clv_id
int, clv_login char(20),clv_password char(20),
lv_passfact char(20)) output
AS
insert into @vartable select * from dbo.tgclaves;


Lo estoy intentando pero no lo consigo.. :-(

Muchas gracias!

Preguntas similare

Leer las respuestas

#1 Javier Loria
15/06/2004 - 15:06 | Informe spam
Hola David:
No es posible declarar un parametro tipo Table en un procedimiento.
Si es posible crear una funcion que devuelva un parametro Table. Esto se
puede hacer con las funciones inline o con las funciones de multiples
Lineas. Las primeras son como vistas con parametros y se crean:
=CREATE FUNCTION dbo.Nombre (
@Parametro TIPO, .
)
RETURNS TABLE
AS RETURN SELECT ..
FROM .
WHERE .
=Las funciones de multiples lineas se parecen mas a los procedimientos
almacenados, permiten mucho mayor flexibilidad, se construyen:
CREATE FUNCTION dbo.Nombre(
@Parametro TIPO, .
)
RETURNS @Tabla TABLE (Columna TIPO, ..Columna TIPO)
AS
INSERT @Tabla
VALUES (.)
=Si lo que quieres es pasar un "arreglo" de valores, entonces no es posible
lograrlo con ninguno de los objetos anteriores, y hay 3 tecnicas mas o menos
standard. Una Tabla Temporal que creas fuera del procedimiento y luego la
usas en el mismo (codigo feo y propenso a errores), pasar una variable tipo
varchar con los valores separados por comas y luego dividirlo en valores
dentro del procedimiento (con frecuencia insertandolos en una variable tipo
Table o Tabla Temporal) y por ultima la mas nueva que es usar XLM.
Ninguno me gusta mucho, pero el de XML es el mas solido. Si esto te
interesa puedes revisar un posteo reciente de Ruben Vigon (un MVP muy
reconocido), llamado Pasar un Rango como Parametro en un SP.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

David escribio:
Hola a todos,

Se puede pasar como parametro OUTPUT una variable de tipo
TABLE en un PROCEDURE??


CREATE PROCEDURE sp_pruebatable @vartable table(clv_id
int, clv_login char(20),clv_password char(20),
lv_passfact char(20)) output
AS
insert into @vartable select * from dbo.tgclaves;


Lo estoy intentando pero no lo consigo.. :-(

Muchas gracias!
Respuesta Responder a este mensaje
#2 David
15/06/2004 - 17:23 | Informe spam
Es posible declarar este procedimiento:

CREATE PROCEDURE sp_pruebatable
as
declare @var_table table(TerritoryID varchar(20),
TerritoryDescription char(20),
RegionID int)

insert into @var_table select * from
dbo.Territories

select top 2 * from @var_table;

EXECUTE sp_pruebatable;


y esto devuelve el resultado de la variable de tipo TABLE,
pero como parametro.. nada?? Lo digo porque asi podria
devolver varias varibles de tipo TABLE desde una llamada a
un mismo PROCEDURE.

¿Donde puedo encontrar "Pasar un Rango como Parametro en
un SP" de Ruben Vigon?


Gracias de nuevo

Hola David:
No es posible declarar un parametro tipo Table en un


procedimiento.
Si es posible crear una funcion que devuelva un parametro


Table. Esto se
puede hacer con las funciones inline o con las funciones


de multiples
Lineas. Las primeras son como vistas con parametros y se


crean:
=>CREATE FUNCTION dbo.Nombre (
@Parametro TIPO, .
)
RETURNS TABLE
AS RETURN SELECT ..
FROM .
WHERE .
=>Las funciones de multiples lineas se parecen mas a los


procedimientos
almacenados, permiten mucho mayor flexibilidad, se


construyen:
CREATE FUNCTION dbo.Nombre(
@Parametro TIPO, .
)
RETURNS @Tabla TABLE (Columna TIPO, ..Columna TIPO)
AS
INSERT @Tabla
VALUES (.)
=>Si lo que quieres es pasar un "arreglo" de valores,


entonces no es posible
lograrlo con ninguno de los objetos anteriores, y hay 3


tecnicas mas o menos
standard. Una Tabla Temporal que creas fuera del


procedimiento y luego la
usas en el mismo (codigo feo y propenso a errores), pasar


una variable tipo
varchar con los valores separados por comas y luego


dividirlo en valores
dentro del procedimiento (con frecuencia insertandolos en


una variable tipo
Table o Tabla Temporal) y por ultima la mas nueva que es


usar XLM.
Ninguno me gusta mucho, pero el de XML es el mas


solido. Si esto te
interesa puedes revisar un posteo reciente de Ruben Vigon


(un MVP muy
reconocido), llamado Pasar un Rango como Parametro en un


SP.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

David escribio:
Hola a todos,

Se puede pasar como parametro OUTPUT una variable de




tipo
TABLE en un PROCEDURE??


CREATE PROCEDURE sp_pruebatable @vartable table(clv_id
int, clv_login char(20),clv_password char(20),
lv_passfact char(20)) output
AS
insert into @vartable select * from dbo.tgclaves;


Lo estoy intentando pero no lo consigo.. :-(

Muchas gracias!




.

Respuesta Responder a este mensaje
#3 Isaías
15/06/2004 - 22:50 | Informe spam
Con el permiso de Javier


CREATE TABLE #var_table (TerritoryID varchar(20))

insert into #var_table values('Nacional')

insert into #var_table
EXEC pr_TraeTerritorios

insert into #var_table
xp_cmdshell 'Type C:\Territorios.txt'


Saludos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida