Problema con un Store Procedure

24/01/2006 - 14:52 por Francisco Chávez G | Informe spam
Que tal señores...

tengo el siguiente Store Procedure

/****** Object: Stored Procedure dbo.sp_update_estados_ordenes
Script Date: 24-01-06 09:54 ******/
CREATE PROCEDURE sp_update_estados_ordenes
@ORORDORD int, @ORSTASTA int

AS
update orord set orstasta = @ORSTASTA where orordord @ORORDORD

If (Select orordord from orhis where orordord = @ORORDORD) = 0

begin
Insert into orhis(orordord, orstasta, orhisdat, orhisdol,
orstaold) values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)
end
Else
begin
Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD
end
GO

lo que pasa es que no entra en el insert del if. La idea es que si no
existe algun registro en la tabla orhis, entre al

Insert into orhis(orordord, orstasta, orhisdat, orhisdol, orstaold)
values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)



y si existe al menos un registro.. entre al

Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD


el problema es que no entra a ninguno de los dos insert del bloque If
else

por favor alguien que me ayude porque el asunto funcionaba en asp y por
comodidad lo quice pasar a SP y acá no funciona... mil gracias desde
ya.

Preguntas similare

Leer las respuestas

#1 Carlos
24/01/2006 - 15:14 | Informe spam
If (Select orordord from orhis where orordord = @ORORDORD) = 0
Aquí estás devolviendo el valor de la columna orordord y no el nº de
registros.

Deberías utilizar esto:

Select count(*) from orhis where orordord = @ORORDORD

Saludos.

"Francisco Chávez G" escribió:

Que tal señores...

tengo el siguiente Store Procedure

/****** Object: Stored Procedure dbo.sp_update_estados_ordenes
Script Date: 24-01-06 09:54 ******/
CREATE PROCEDURE sp_update_estados_ordenes
@ORORDORD int, @ORSTASTA int

AS
update orord set orstasta = @ORSTASTA where orordord > @ORORDORD

If (Select orordord from orhis where orordord = @ORORDORD) = 0

begin
Insert into orhis(orordord, orstasta, orhisdat, orhisdol,
orstaold) values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)
end
Else
begin
Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD
end
GO

lo que pasa es que no entra en el insert del if. La idea es que si no
existe algun registro en la tabla orhis, entre al

Insert into orhis(orordord, orstasta, orhisdat, orhisdol, orstaold)
values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)



y si existe al menos un registro.. entre al

Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD


el problema es que no entra a ninguno de los dos insert del bloque If
else

por favor alguien que me ayude porque el asunto funcionaba en asp y por
comodidad lo quice pasar a SP y acá no funciona... mil gracias desde
ya.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
24/01/2006 - 15:14 | Informe spam
Francisco,

Trata de usar las sentencias de manera que estas simulen la forma en que
describes la solucion.

lo que pasa es que no entra en el insert del if. La idea es que si no
existe algun registro en la tabla orhis, entre al

Insert into orhis(orordord, orstasta, orhisdat, orhisdol, orstaold)
values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)



if not exists (
Select * from orhis where orordord = @ORORDORD
)
begin
Insert into orhis(orordord, orstasta, orhisdat, orhisdol,orstaold)
values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)
end
else
begin
...
end


AMB

"Francisco Chávez G" wrote:

Que tal señores...

tengo el siguiente Store Procedure

/****** Object: Stored Procedure dbo.sp_update_estados_ordenes
Script Date: 24-01-06 09:54 ******/
CREATE PROCEDURE sp_update_estados_ordenes
@ORORDORD int, @ORSTASTA int

AS
update orord set orstasta = @ORSTASTA where orordord > @ORORDORD

If (Select orordord from orhis where orordord = @ORORDORD) = 0

begin
Insert into orhis(orordord, orstasta, orhisdat, orhisdol,
orstaold) values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)
end
Else
begin
Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD
end
GO

lo que pasa es que no entra en el insert del if. La idea es que si no
existe algun registro en la tabla orhis, entre al

Insert into orhis(orordord, orstasta, orhisdat, orhisdol, orstaold)
values(@ORORDORD, @ORSTASTA, getdate(), getdate(), 0)



y si existe al menos un registro.. entre al

Insert into orhis(orordord, orstasta, orstaOld, orhisdat,
orhisdol) select a.orordord, @ORSTASTA, a.orstasta, getdate(),
a.orhisdat from orhis a, (select Max(orhisdat) fechaant from orhis
where orordord = " & lngOrdenId & ") b where a.orhisdat = b.fechaant
and a.orordord = @ORORDORD


el problema es que no entra a ninguno de los dos insert del bloque If
else

por favor alguien que me ayude porque el asunto funcionaba en asp y por
comodidad lo quice pasar a SP y acá no funciona... mil gracias desde
ya.


Respuesta Responder a este mensaje
#3 Francisco Chávez G
24/01/2006 - 15:19 | Informe spam
gracias estimados.. comencé a ver vsarios ejemplos de Insert mediante
SP y tambien me di cuenta de que debia poner un Select count(*)


Mil Gracias sres ahora me funciona el asunto..
Respuesta Responder a este mensaje
#4 Alejandro Mesa
24/01/2006 - 15:58 | Informe spam
Francisco Chávez G,

No necesitas contar cuantas filas cumplen la condicion, para probar
existencia. Si existe al menos uno, entonces se cumple la condicion. Contar
las filas consume mas recursos y tiempo, por eso recomiendo que uses el
operador "exists".


AMB


"Francisco Chávez G" wrote:

gracias estimados.. comencé a ver vsarios ejemplos de Insert mediante
SP y tambien me di cuenta de que debia poner un Select count(*)


Mil Gracias sres ahora me funciona el asunto..


Respuesta Responder a este mensaje
#5 Francisco Chávez G
24/01/2006 - 18:02 | Informe spam
Gracias Alejandro:
Me ha quedado mas claro y lo he hecho como recomiendas...gracias..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida