Necesito ayuda en un Store Procedure

08/11/2005 - 21:18 por Angel Lopez | Informe spam
Al programar el siguiente Store Procedure me envia un error, donde me dice
que declare la variable lcFile, lo que intento hacer es pasarle varios
valores desde Visual Basic, como nombre del archivo donde ejecutará el
UPDATE, pero es ahi donde me indica que declare la variable lcFile, espero me
puedan ayudar

Create Procedure PasaVtas
@idPromoLc varchar(20),
@lcFile varchar(19),
@lcFec1 varchar(19),
@lcFec2 varchar(19)
As
Update Promo_Det
Set Ventas = (Select Sum(Cantidad) From @lcFile
Where Cve_Suc = Promo_Det.Cve_Suc
And rtrim(Prod) COLLATE Modern_Spanish_CI_AS =
rtrim(Promo_Det.Cve_Prod)
And (Dia >= CONVERT(DATETIME, @lcFec1, 102)
And Dia <= CONVERT(DATETIME, @lcFec2, 102)))
Where idPromo = @idPromoLc

GO

Preguntas similare

Leer las respuestas

#1 Maxi [MVP]
08/11/2005 - 21:25 | Informe spam
Hola, para hacerlo asi debes usar SQL-Dinamico (Sp_Executesql) pero es un
tecnica que tiene serios problemas con la seguridad.


La pregunta es: porque hacer un store generico asi?? o bien haces uno para
cada tabla o no hagas SP, porque le quitas todas las ventajas al mismo


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
Miembro de GUESS



"Angel Lopez" escribió en el mensaje
news:
Mostrar la cita
#2 Isaias
08/11/2005 - 21:30 | Informe spam
Angel

Con sus reservas, podrias utilizar QUERY DINAMICO, solo cuida la inyeccion
de codigo.

Ejemplo:

CREATE PROCEDURE pr_DespliegaTabla
@MyTabla VARCHAR(50)
AS
SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100)
SET @SQLString = N'SELECT * FROM '+@MyTabla
EXEC sp_executesql @SQLString



Saludos
IIslas


"Angel Lopez" escribió:

Mostrar la cita
#3 Angel Lopez
08/11/2005 - 22:26 | Informe spam
Isaias gracias por la respuesta pero como que no me queda muy claro,
siguiendo el ejemplo como es que quedaría en un query dinámico? O en su
defecto dado como esta programado que es lo que me hace falta

Gracias




"Isaias" escribió:

Mostrar la cita
#4 Alejandro Mesa
08/11/2005 - 22:47 | Informe spam
Trata:

Create Procedure PasaVtas
@idPromoLc varchar(20),
@lcFile varchar(19),
@lcFec1 varchar(19),
@lcFec2 varchar(19)
As
set nocount on

declare @sql nvarchar(4000)

set @sql = N'
Update Promo_Det
Set Ventas = (Select Sum(Cantidad) From ' + @lcFile + N'
Where Cve_Suc = Promo_Det.Cve_Suc
And rtrim(Prod) COLLATE Modern_Spanish_CI_AS =
rtrim(Promo_Det.Cve_Prod)
And (Dia >= CONVERT(DATETIME, @lcFec1, 102)
And Dia <= CONVERT(DATETIME, @lcFec2, 102)))
Where idPromo = @idPromoLc'

exec sp_executesql @sql, N'@idPromoLc varchar(20), @lcFec1 varchar(19),
@lcFec2 varchar(19)', @idPromoLc, @lcFec1, @lcFec2
go

Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html


AMB

"Angel Lopez" wrote:

Mostrar la cita
#5 Angel Lopez
08/11/2005 - 22:56 | Informe spam
Muchas gracias Alejandro por la respuesta

Saludos


"Alejandro Mesa" escribió:

Mostrar la cita
Ads by Google
Search Busqueda sugerida