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

#6 Guido Catalano
08/11/2005 - 23:43 | Informe spam
Hola, a menos que por la exesiva cantidad de tablas no puedas hacer un sp
para cada una, tus sps tendrían q ser:

Create Procedure PasaVtas
@idPromoLc varchar(20),
@lcFec1 varchar(19),
@lcFec2 varchar(19)
As
Update Promo_Det
Set Ventas = (Select Sum(Cantidad) From NombreDeTuTabla
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



En lugar de pasar como parámetro el nombre de una tabla, trata de que tu
aplicación llame a uno u otro sp según que tabla quieras consultar.
En el caso que no sepas el nombre de la tabla en tiempo de diseño, :S !!
deberás usar sql dinámico, o sea: armar la consulta en una variable y
ejecutarla.


Guido.-

"Angel Lopez" escribió en el mensaje
news:
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ó:

> 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ó:
>
> > 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
> >
Respuesta Responder a este mensaje
#7 Maxi [MVP]
09/11/2005 - 00:25 | Informe spam
Hola, y cual es el problema de hacer muchos Sp's??


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



"Guido Catalano" escribió en el mensaje
news:
Hola, a menos que por la exesiva cantidad de tablas no puedas hacer un sp
para cada una, tus sps tendrían q ser:

Create Procedure PasaVtas
@idPromoLc varchar(20),
@lcFec1 varchar(19),
@lcFec2 varchar(19)
As
Update Promo_Det
Set Ventas = (Select Sum(Cantidad) From NombreDeTuTabla
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



En lugar de pasar como parámetro el nombre de una tabla, trata de que tu
aplicación llame a uno u otro sp según que tabla quieras consultar.
En el caso que no sepas el nombre de la tabla en tiempo de diseño, :S !!
deberás usar sql dinámico, o sea: armar la consulta en una variable y
ejecutarla.


Guido.-

"Angel Lopez" escribió en el
mensaje
news:
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ó:

> 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ó:
>
> > 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
> >




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