declaracion de variable y asignacion de valor

06/10/2005 - 22:11 por nelva | Informe spam
Estimados,

Estoy tratando de asignar a una variable tipo datetime una fecha, en la que
es estático el dia y el mes, lo unico que variara es el año en curso, la
asignacion que estoy usando me manda error.. Alguna Idea de como hacerlo
les detallo el Procedimiento almacenado.
CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
AS
SELECT RTRIM(Funcionarios.FUN_Nombre) + ' ' + Funcionarios.FUN_Apellidos
AS funcionario, Funcionarios.FUN_Fecha_Ingreso, Direcciones.DIR_ID,
Direcciones.DIR_Nombre, Cargos.CAR_ID,
Cargos.CAR_Nombre, Funcionarios.FUN_Salario, Funcionarios.FUN_Activo,
Funcionarios.FUN_ID,
DATEDIFF(month, Funcionarios.FUN_Fecha_Ingreso,
@FECHAFIN) * 30 + DAY(@FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso)
- (CASE WHEN day(dbo.Funcionarios.FUN_Fecha_Ingreso)

= 30 AND day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad


FROM Funcionarios LEFT OUTER JOIN
Direcciones ON Funcionarios.DIR_ID Direcciones.DIR_ID LEFT OUTER JOIN
Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID
WHERE (Funcionarios.FUN_Activo = 1)
GO

Preguntas similare

Leer las respuestas

#1 Maxi
06/10/2005 - 22:22 | Informe spam
Hola, proba asi


CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
SET @FECHAFIN = '30/11/' + convert(VARCHAR(4),YEAR(GETDATE()))

...


bye





Salu2
Maxi


"nelva" escribió en el mensaje
news:
Estimados,

Estoy tratando de asignar a una variable tipo datetime una fecha, en la
que
es estático el dia y el mes, lo unico que variara es el año en curso, la
asignacion que estoy usando me manda error.. Alguna Idea de como hacerlo
les detallo el Procedimiento almacenado.
CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
AS
SELECT RTRIM(Funcionarios.FUN_Nombre) + ' ' +
Funcionarios.FUN_Apellidos
AS funcionario, Funcionarios.FUN_Fecha_Ingreso, Direcciones.DIR_ID,
Direcciones.DIR_Nombre, Cargos.CAR_ID,
Cargos.CAR_Nombre, Funcionarios.FUN_Salario, Funcionarios.FUN_Activo,
Funcionarios.FUN_ID,
DATEDIFF(month, Funcionarios.FUN_Fecha_Ingreso,
@FECHAFIN) * 30 + DAY(@FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso)
- (CASE WHEN day(dbo.Funcionarios.FUN_Fecha_Ingreso)
= 30 AND day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad


FROM Funcionarios LEFT OUTER JOIN
Direcciones ON Funcionarios.DIR_ID > Direcciones.DIR_ID LEFT OUTER JOIN
Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID
WHERE (Funcionarios.FUN_Activo = 1)
GO


Respuesta Responder a este mensaje
#2 Alejandro Mesa
06/10/2005 - 22:28 | Informe spam
Nelva,

Chequea la funcion "convert" en los libros en linea. Fijate en los estilos
112 y 126. Si las constantes de fecha las manejas usando estos formatos, sql
server siempre interpretara correctamente el dato como fecha sin importar el
seteo de "set dateformat" o el lenguaje usado en la instalacion.

En la creacion de un sp, el codigo comienza despues de la palabra clave "AS"
y el operador de concatenacion es "+" y no "&".

CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
AS



CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
AS

SET @FECHAFIN = ltrim(YEAR(GETDATE())) + '1130'
...


AMB



"nelva" wrote:

Estimados,

Estoy tratando de asignar a una variable tipo datetime una fecha, en la que
es estático el dia y el mes, lo unico que variara es el año en curso, la
asignacion que estoy usando me manda error.. Alguna Idea de como hacerlo
les detallo el Procedimiento almacenado.
CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
AS
SELECT RTRIM(Funcionarios.FUN_Nombre) + ' ' + Funcionarios.FUN_Apellidos
AS funcionario, Funcionarios.FUN_Fecha_Ingreso, Direcciones.DIR_ID,
Direcciones.DIR_Nombre, Cargos.CAR_ID,
Cargos.CAR_Nombre, Funcionarios.FUN_Salario, Funcionarios.FUN_Activo,
Funcionarios.FUN_ID,
DATEDIFF(month, Funcionarios.FUN_Fecha_Ingreso,
@FECHAFIN) * 30 + DAY(@FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso)
- (CASE WHEN day(dbo.Funcionarios.FUN_Fecha_Ingreso)
>= 30 AND day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad
FROM Funcionarios LEFT OUTER JOIN
Direcciones ON Funcionarios.DIR_ID > Direcciones.DIR_ID LEFT OUTER JOIN
Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID
WHERE (Funcionarios.FUN_Activo = 1)
GO



Respuesta Responder a este mensaje
#3 nelva
07/10/2005 - 00:21 | Informe spam
Gracias . Excelente

Tengo otra pregunta. A la variable declarada ya le he asignado un valor,
como hago para omitir que me envie la pantalla de solicitud de parametros de
entrada. NO deberia por que ya lo defini en el SET.

ALTER PROCEDURE dbo.PCA_AGUINALDO

@FECHAFIN DATETIME AS

SET @FECHAFIN = ltrim(YEAR(GETDATE())) + '1130'

SELECT @fechafin as fecha, RTRIM(Funcionarios.FUN_Nombre) + ' ' +
Funcionarios.FUN_Apellidos AS funcionario, Funcionarios.FUN_Fecha_Ingreso,

Direcciones.DIR_ID, Direcciones.DIR_Nombre, Cargos.CAR_ID,
Cargos.CAR_Nombre, Funcionarios.FUN_Salario,

Funcionarios.FUN_Activo, Funcionarios.FUN_ID, DATEDIFF(month,
Funcionarios.FUN_Fecha_Ingreso, @FECHAFIN)

* 30 + DAY( @FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso) - (CASE WHEN
day(dbo.Funcionarios.FUN_Fecha_Ingreso) >= 30 AND

day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad

FROM Funcionarios LEFT OUTER JOIN

Direcciones ON Funcionarios.DIR_ID = Direcciones.DIR_ID LEFT OUTER JOIN

Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID

WHERE (Funcionarios.FUN_Activo = 1)

"Alejandro Mesa" escribió en el
mensaje news:
Nelva,

Chequea la funcion "convert" en los libros en linea. Fijate en los estilos
112 y 126. Si las constantes de fecha las manejas usando estos formatos,


sql
server siempre interpretara correctamente el dato como fecha sin importar


el
seteo de "set dateformat" o el lenguaje usado en la instalacion.

En la creacion de un sp, el codigo comienza despues de la palabra clave


"AS"
y el operador de concatenacion es "+" y no "&".

> CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
> @FECHAFIN DATETIME
> SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
> AS

CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
@FECHAFIN DATETIME
AS

SET @FECHAFIN = ltrim(YEAR(GETDATE())) + '1130'
...


AMB



"nelva" wrote:

> Estimados,
>
> Estoy tratando de asignar a una variable tipo datetime una fecha, en la


que
> es estático el dia y el mes, lo unico que variara es el año en curso, la
> asignacion que estoy usando me manda error.. Alguna Idea de como hacerlo
> les detallo el Procedimiento almacenado.
> CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
> @FECHAFIN DATETIME
> SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
> AS
> SELECT RTRIM(Funcionarios.FUN_Nombre) + ' ' +


Funcionarios.FUN_Apellidos
> AS funcionario, Funcionarios.FUN_Fecha_Ingreso, Direcciones.DIR_ID,
> Direcciones.DIR_Nombre, Cargos.CAR_ID,
> Cargos.CAR_Nombre, Funcionarios.FUN_Salario, Funcionarios.FUN_Activo,
> Funcionarios.FUN_ID,
> DATEDIFF(month, Funcionarios.FUN_Fecha_Ingreso,
> @FECHAFIN) * 30 + DAY(@FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso)
> - (CASE WHEN


day(dbo.Funcionarios.FUN_Fecha_Ingreso)
> >= 30 AND day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad
> FROM Funcionarios LEFT OUTER JOIN
> Direcciones ON Funcionarios.DIR_ID > > Direcciones.DIR_ID LEFT OUTER JOIN
> Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID
> WHERE (Funcionarios.FUN_Activo = 1)
> GO
>
>
>
Respuesta Responder a este mensaje
#4 Alejandro Mesa
07/10/2005 - 02:15 | Informe spam
Nelva,

Tengo otra pregunta. A la variable declarada ya le he asignado un valor,
como hago para omitir que me envie la pantalla de solicitud de parametros de
entrada. NO deberia por que ya lo defini en el SET.



No se a que te refieres cuando dices "pantalla de solicitud de parametros de
entrada", nos puedes decir a que pantalla te refieres?

Para asignar un valor por defecto a un parametro, le debes asignar una
constante en la misma declaracion. No se pueden usar funciones.

ALTER PROCEDURE dbo.PCA_AGUINALDO
@FECHAFIN DATETIME = '20051006'
AS
...


AMB

"nelva" wrote:

Gracias . Excelente

Tengo otra pregunta. A la variable declarada ya le he asignado un valor,
como hago para omitir que me envie la pantalla de solicitud de parametros de
entrada. NO deberia por que ya lo defini en el SET.

ALTER PROCEDURE dbo.PCA_AGUINALDO

@FECHAFIN DATETIME AS

SET @FECHAFIN = ltrim(YEAR(GETDATE())) + '1130'

SELECT @fechafin as fecha, RTRIM(Funcionarios.FUN_Nombre) + ' ' +
Funcionarios.FUN_Apellidos AS funcionario, Funcionarios.FUN_Fecha_Ingreso,

Direcciones.DIR_ID, Direcciones.DIR_Nombre, Cargos.CAR_ID,
Cargos.CAR_Nombre, Funcionarios.FUN_Salario,

Funcionarios.FUN_Activo, Funcionarios.FUN_ID, DATEDIFF(month,
Funcionarios.FUN_Fecha_Ingreso, @FECHAFIN)

* 30 + DAY( @FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso) - (CASE WHEN
day(dbo.Funcionarios.FUN_Fecha_Ingreso) >= 30 AND

day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad

FROM Funcionarios LEFT OUTER JOIN

Direcciones ON Funcionarios.DIR_ID = Direcciones.DIR_ID LEFT OUTER JOIN

Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID

WHERE (Funcionarios.FUN_Activo = 1)

"Alejandro Mesa" escribió en el
mensaje news:
> Nelva,
>
> Chequea la funcion "convert" en los libros en linea. Fijate en los estilos
> 112 y 126. Si las constantes de fecha las manejas usando estos formatos,
sql
> server siempre interpretara correctamente el dato como fecha sin importar
el
> seteo de "set dateformat" o el lenguaje usado en la instalacion.
>
> En la creacion de un sp, el codigo comienza despues de la palabra clave
"AS"
> y el operador de concatenacion es "+" y no "&".
>
> > CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
> > @FECHAFIN DATETIME
> > SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
> > AS
>
> CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
> @FECHAFIN DATETIME
> AS
>
> SET @FECHAFIN = ltrim(YEAR(GETDATE())) + '1130'
> ...
>
>
> AMB
>
>
>
> "nelva" wrote:
>
> > Estimados,
> >
> > Estoy tratando de asignar a una variable tipo datetime una fecha, en la
que
> > es estático el dia y el mes, lo unico que variara es el año en curso, la
> > asignacion que estoy usando me manda error.. Alguna Idea de como hacerlo
> > les detallo el Procedimiento almacenado.
> > CREATE PROCEDURE [OWNER]."PCA_AGUINALDO"
> > @FECHAFIN DATETIME
> > SET @FECHAFIN = '30/11/' &YEAR(GETDATE())
> > AS
> > SELECT RTRIM(Funcionarios.FUN_Nombre) + ' ' +
Funcionarios.FUN_Apellidos
> > AS funcionario, Funcionarios.FUN_Fecha_Ingreso, Direcciones.DIR_ID,
> > Direcciones.DIR_Nombre, Cargos.CAR_ID,
> > Cargos.CAR_Nombre, Funcionarios.FUN_Salario, Funcionarios.FUN_Activo,
> > Funcionarios.FUN_ID,
> > DATEDIFF(month, Funcionarios.FUN_Fecha_Ingreso,
> > @FECHAFIN) * 30 + DAY(@FECHAFIN) - DAY(Funcionarios.FUN_Fecha_Ingreso)
> > - (CASE WHEN
day(dbo.Funcionarios.FUN_Fecha_Ingreso)
> > >= 30 AND day(@FECHAFIN) = 31 THEN 1 ELSE 0 END) AS antiguedad
> > FROM Funcionarios LEFT OUTER JOIN
> > Direcciones ON Funcionarios.DIR_ID > > > Direcciones.DIR_ID LEFT OUTER JOIN
> > Cargos ON Funcionarios.CAR_ID = Cargos.CAR_ID
> > WHERE (Funcionarios.FUN_Activo = 1)
> > GO
> >
> >
> >



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