Procedimientos Almacenados

Hola, tengo una preguntita que espero me puedas ayudar a resolver, de antemano, muchas gracias por la atención a este mail...
Estoy realizando una aplicación en Power Builder 7.0 y accediendo a datos de una BD en SQL Server 2000, tengo un procedimiento almacenado en la BD de Sql y lo llamo desde Power Builder, pero me aparece el sig. Error:
"SQLState = 22005 Invalid character value for cast specification"
El procedimiento en sql, es el sig:
/****************************************************
CREATE PROCEDURE us_validar_fechas @fecha char(10) , @resultado integer OUTPUT AS
declare @año integer,@mes integer,@dia integer
set @año = datediff(year,cast(rtrim(@fecha) as datetime),getdate())
set @mes = datediff(month,cast(rtrim(@fecha) as datetime),getdate())
set @dia = datediff(day,cast(rtrim(@fecha) as datetime),getdate())
if @año = 0 and @mes = 0 and @dia = 0
begin
return 1
end
else
begin
return 0
end
GO
******************************************************/
y el código en Power Builder para accesarlo es el sig:
/**************************************************
string fecha
int resultado
fecha = string(today(),"yyyy-mm-dd")
CONNECT USING SQLCA;
IF SQLCA.SQLCode = -1 THEN
MessageBox("SQL error1", SQLCA.SQLErrText)
END IF
declare proc_valid procedure for us_validar_fechas @fecha = :fecha, @resultado = :resultado OUTPUT;
execute proc_valid;
IF SQLCA.SQLCode = -1 THEN
MessageBox("SQL error2", SQLCA.SQLErrText)
END IF
if resultado = 1 then
MessageBox("Resultado","si coinciden las fechas")
end if
if resultado = 2 then
MessageBox("Resultado","no coinciden las fechas")
end if
*******************************************************/
Muchas gracias, Saludos. Claudia Judith López Rivera.-

1 respuesta

Respuesta
1
Disculpa la demora..
Prueba cambiar en el SP
set @año = datediff(year,@fecha,getdate())
set @mes = datediff(month,@fecha,getdate())
set @dia = datediff(day,@fecha,getdate())
Esto si funciona en SQL6.5 que es lo que tengo...
O podrías pasarle al SP la fecha de tipo datetime para no tener que usar la funucion cast...
Disculpa la demora..
Prueba cambiar en el SP
set @año = datediff(year,@fecha,getdate())
set @mes = datediff(month,@fecha,getdate())
set @dia = datediff(day,@fecha,getdate())
Esto si funciona en SQL6.5 que es lo que tengo...
O podrías pasarle al SP la fecha de tipo datetime para no tener que usar la función cast...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas