Parametrizar nombre tabla

09/01/2004 - 16:47 por Mario Barro | Informe spam
Hola a todos/as;

Es posible parametrizar el nombre de una tabla en un procedimiento
almacenado.
Es decir, hay muchas tablas con distinto nombre pero que tienen los mismos
campos y los correspondientes procedimientos para insertar datos.

El caso es que en cada procedimiento almacenado de insercción sólo cambia el
nombre de la tabla.
Se podría (o cómo) hacer algo como esto.

CREATE PROCEDURE pa_Insert_A
@Campo nchar(50),
@NameTable nchar(20)
AS
INSERT INTO @NameTable (Campo) VALUES (@NameTable)
GO


Es decir, pasar de alguna manera el nombre de la tabla de inserción.
¿Cómo se podría afrontar este tipo de cuestión?

Saludos
Mario Barro

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
09/01/2004 - 16:55 | Informe spam
Hola Mario

para hacer lo que vos decis deberias usar algo que se llama SqlDinamico

Veamos un ej si?

create table prueba45 (num int)

go

create proc insertar @tabla nchar(100) as

declare @str nvarchar(4000)

set @str = N'Insert into ' + @tabla + ' select 1 '

EXEC sp_executesql @str

go

exec insertar 'prueba45'

salu2

Maximiliano Damian Accotto

"Mario Barro" escribió en el mensaje
news:
Hola a todos/as;

Es posible parametrizar el nombre de una tabla en un procedimiento
almacenado.
Es decir, hay muchas tablas con distinto nombre pero que tienen los mismos
campos y los correspondientes procedimientos para insertar datos.

El caso es que en cada procedimiento almacenado de insercción sólo cambia


el
nombre de la tabla.
Se podría (o cómo) hacer algo como esto.

CREATE PROCEDURE pa_Insert_A
@Campo nchar(50),
@NameTable nchar(20)
AS
INSERT INTO @NameTable (Campo) VALUES (@NameTable)
GO


Es decir, pasar de alguna manera el nombre de la tabla de inserción.
¿Cómo se podría afrontar este tipo de cuestión?

Saludos
Mario Barro


Respuesta Responder a este mensaje
#2 Mario Barro
09/01/2004 - 18:18 | Informe spam
Gracias por tu respuesta;

Entiendo tu propuesta pero no logro que me funcione correctamente cuando hay
más parámetro que el nombre de la tabla.

Ej:
-
CREATE PROC Insertar
@tabla nchar(100),
@campo1 int,
@campo2 binary(200)
AS
DECLARE @str nvarchar(4000)
SET @str = N'Insert into ' + @tabla + ' (campo1, campo2) VALUES (@campo1,
@campo2)'

EXEC sp_executesql @str

GO
-

Supongo que será alguna cosa simple pero no doy con ella así a bote pronto.
Saludos y gracias de nuevo.
Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
09/01/2004 - 18:21 | Informe spam
es que debes hacer esto:

SET @str = N'Insert into ' + @tabla + ' (campo1, campo2) VALUES (' +
@campo1 + ',' +
@campo2 + ')'

Se entiende? ves como concateno todo con + ?

Salu2



Maximiliano Damian Accotto


"Mario Barro" escribió en el mensaje
news:%
Gracias por tu respuesta;

Entiendo tu propuesta pero no logro que me funcione correctamente cuando


hay
más parámetro que el nombre de la tabla.

Ej:
CREATE PROC Insertar
@tabla nchar(100),
@campo1 int,
@campo2 binary(200)
AS
DECLARE @str nvarchar(4000)
SET @str = N'Insert into ' + @tabla + ' (campo1, campo2) VALUES


(@campo1,
@campo2)'

EXEC sp_executesql @str

GO

Supongo que será alguna cosa simple pero no doy con ella así a bote


pronto.
Saludos y gracias de nuevo.


Respuesta Responder a este mensaje
#4 Mario Barro
09/01/2004 - 18:37 | Informe spam
Asi lo había hecho al principio y me arroja el siguiente error;

Error de sintaxis al convertir el valor nvarchar 'INSERT INTO dbo.tblTabla
(campo1, campo2)
VALUES (' para una columna de tipo de datos int.
Respuesta Responder a este mensaje
#5 Maximiliano Damian Accotto
09/01/2004 - 18:50 | Informe spam
es que debes usar el convert. aca va un ej

declare @ent int

set @ent = 15

set @str = N'Insert into ' + @tabla + ' select ' + convert(nchar(100),@ent)

Salu2
Maximiliano Damian Accotto



"Mario Barro" escribió en el mensaje
news:
Asi lo había hecho al principio y me arroja el siguiente error;

Error de sintaxis al convertir el valor nvarchar 'INSERT INTO dbo.tblTabla
(campo1, campo2)
VALUES (' para una columna de tipo de datos int.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida