SQL - Store Procedure

 
Vista:

Store Procedure

Publicado por Elizabeth (4 intervenciones) el 23/02/2005 18:37:45
hola a todos, tengo un problema con la creacion de un store procedure, si pudieran orientarme por favor.

en el store procedure tengo 3 parametros tipo caracter que son el nombre de una tabla, una columna a crear y una columna a modificar; y en el cuerpo los mando llamar para realizar un 'alter table' y enseguida pongo el nombre de la primer variable y me marca error, si lo hago con codigo normal es decir poniendo los nombres de la tabla y los campos no tengo problema, el error es cuando llamo las variables, me marca error de sintaxis.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Store Procedure

Publicado por Isaías Islas (5072 intervenciones) el 24/02/2005 00:19:23
¿Es SQL Server?, ¿Haces un ADD COLUMN y un ALTER COLUMN?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Elizabeth (4 intervenciones) el 24/02/2005 21:29:18
Es en SQL y este es el codigo del Store Procedure

**************
REATE PROCEDURE sp_act_muni
(
@Tabla char(20),
@CreaColum char(20),
@ModColum char(20)
)
AS

Alter table @Tabla
add @CreaColum int null default 0
go

update @Tabla
set @CreaColum = (Select isnull(Mun,0) From Lugar where Blanco = @Tabla.@ModColum)
go

update @Tabla
set @CreaColum = 0
where @CreaColum is null
go

Alter table @Tabla
alter column @CreaColum INT NOT NULL
go
GO
*******************
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Isaías Islas (5072 intervenciones) el 24/02/2005 22:23:21
Debe utilizar el query dinamico:

CREATE PROCEDURE sp_act_muni
(
@Tabla char(20),
@CreaColum char(20),
@ModColum char(20)
)
AS

SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100)

SET @SQLString = N'Alter table '+ @Tabla ' add '+ @CreaColum +' int null default 0'
EXEC sp_executesql @SQLString
go

SET @SQLString = N'update '+@Tabla +' set '+ @CreaColum +' = (Select isnull(Mun,0) From Lugar where Blanco = '+ @Tabla+'.'+@ModColum+')'
EXEC sp_executesql @SQLString
go

SET @SQLString = N'update '+@Tabla+' set '+ @CreaColum+' = 0 where '+@CreaColum+' is null'
EXEC sp_executesql @SQLString
go

SET @SQLString = N'Alter table '+@Tabla+'alter column '+ @CreaColum+'INT NOT NULL'
EXEC sp_executesql @SQLString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Elizabeth (4 intervenciones) el 25/02/2005 02:00:09
Muchas gracias por la opcion, pero no se si estoy fallando en la declaración de las variables porque me envia el sig. error:

Microsoft SQL-DMO(ODBC SQLState:42000)
Error 137: Debe declarar la variable '@Tabla'. Debe declarar la}
variable '@SQLString'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Store Procedure

Publicado por Isaías Islas (5072 intervenciones) el 25/02/2005 16:59:51
Revisa que los nombres de ambas varibles sean EXACTAMENTE las que estoy declarando en DECLARE y las que pasas como parametro (Tabla).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar