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!
 

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!

Preguntas similares