parametros en procedimiento almacenado comillas
Publicado por Fabián (7 intervenciones) el 28/11/2011 21:54:40
Buenas estoy trabajando con SQL server 2008 R2.
Tengo la siguiente duda
tengo un procedimiento almacenado el cual recibe tres parametros y realiza una consulta
Alter PROCEDURE xxx (@filiales varchar(50), @fechaInicio datetime, @fechaFin datetime)
AS
BEGIN
SELECT
CASE
WHEN Compañia='EXCR' THEN 'SCR'
WHEN Compañia='EXES' THEN 'SES'
ELSE Compañia
END AS Compañia,
SUM([Horas No Cobradas]) AS 'TotalHNC',
'TotalHoras'=( SELECT SUM([Horas Cobradas]+[Horas No Cobradas]+[Horas Extra])
FROM dbo.informes_globales info2
WHERE ([Fecha Reporte])between @fechaInicio and @fechaFin
AND info2.Compañia = info.Compañia)
FROM dbo.informes_globales info WHERE ([Fecha Reporte])
between @fechaInicio and @fechaFin
AND Compañia IN (@filiales)
GROUP BY Compañia
END
go
Prueba:
DECLARE @filial varchar(50), @fecha datetime, @fecha2 datetime;
SET @filial = '''excr''' + ','+ '''exes''';
SET @fecha = '2011-10-01';
SET @fecha2 = '2011-12-31';
exec xxx @filial, @fecha, @fecha2;
se supone que la consulta si me devuelve valores cuando la realizo a pie y le pongo los parametros ejemplo:
SELECT
CASE
WHEN Compañia='EXCR' THEN 'SCR'
WHEN Compañia='EXES' THEN 'SES'
ELSE Compañia
END AS Compañia,
SUM([Horas No Cobradas]) AS 'TotalHNC',
'TotalHoras'=( SELECT SUM([Horas Cobradas]+[Horas No Cobradas]+[Horas Extra])
FROM dbo.informes_globales info2
WHERE ([Fecha Reporte])between '2011-10-01' and '2011-12-31'
AND info2.Compañia = info.Compañia)
FROM dbo.informes_globales info WHERE ([Fecha Reporte])
between '2011-10-01' and '2011-12-31'
AND Compañia IN ('excr','exes')
GROUP BY Compañia
si me devuelve los valores. en cambio si ejecuto el procedimiento almacenado no, esto es por el valor @filiales
debe de ser esto ('excr','exes'), le asigno los mismos valores de esta manera @filial = '''excr''' + ','+ '''exes''' y no funciona alguien sabe porque?. supongo q es el manejo con las comillas simples
gracias
Tengo la siguiente duda
tengo un procedimiento almacenado el cual recibe tres parametros y realiza una consulta
Alter PROCEDURE xxx (@filiales varchar(50), @fechaInicio datetime, @fechaFin datetime)
AS
BEGIN
SELECT
CASE
WHEN Compañia='EXCR' THEN 'SCR'
WHEN Compañia='EXES' THEN 'SES'
ELSE Compañia
END AS Compañia,
SUM([Horas No Cobradas]) AS 'TotalHNC',
'TotalHoras'=( SELECT SUM([Horas Cobradas]+[Horas No Cobradas]+[Horas Extra])
FROM dbo.informes_globales info2
WHERE ([Fecha Reporte])between @fechaInicio and @fechaFin
AND info2.Compañia = info.Compañia)
FROM dbo.informes_globales info WHERE ([Fecha Reporte])
between @fechaInicio and @fechaFin
AND Compañia IN (@filiales)
GROUP BY Compañia
END
go
Prueba:
DECLARE @filial varchar(50), @fecha datetime, @fecha2 datetime;
SET @filial = '''excr''' + ','+ '''exes''';
SET @fecha = '2011-10-01';
SET @fecha2 = '2011-12-31';
exec xxx @filial, @fecha, @fecha2;
se supone que la consulta si me devuelve valores cuando la realizo a pie y le pongo los parametros ejemplo:
SELECT
CASE
WHEN Compañia='EXCR' THEN 'SCR'
WHEN Compañia='EXES' THEN 'SES'
ELSE Compañia
END AS Compañia,
SUM([Horas No Cobradas]) AS 'TotalHNC',
'TotalHoras'=( SELECT SUM([Horas Cobradas]+[Horas No Cobradas]+[Horas Extra])
FROM dbo.informes_globales info2
WHERE ([Fecha Reporte])between '2011-10-01' and '2011-12-31'
AND info2.Compañia = info.Compañia)
FROM dbo.informes_globales info WHERE ([Fecha Reporte])
between '2011-10-01' and '2011-12-31'
AND Compañia IN ('excr','exes')
GROUP BY Compañia
si me devuelve los valores. en cambio si ejecuto el procedimiento almacenado no, esto es por el valor @filiales
debe de ser esto ('excr','exes'), le asigno los mismos valores de esta manera @filial = '''excr''' + ','+ '''exes''' y no funciona alguien sabe porque?. supongo q es el manejo con las comillas simples
gracias
Valora esta pregunta


0