SQL - SP llama otro SP

 
Vista:

SP llama otro SP

Publicado por Oscar Gonzalez (1 intervención) el 22/08/2002 21:32:52
Amigos. estoy intentando ejecutar un SP que evalúa cada registro recuperado del SP pricipal, pero he tenido problemas, acontinuación adjunto código fuente.

USE Hospital
GO
IF OBJECT_ID('dbo.Cons_BuscaLiquidacionMedico') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.Cons_BuscaLiquidacionMedico
PRINT "Procedimiento Borrado"
END
GO

CREATE PROCEDURE Cons_BuscaLiquidacionMedico
@FechaInicial smalldatetime, @FechaFinal smalldatetime
AS
declare @Estado bit
declare @Hora char(10)
SELECT CargosRayosGlosa.Cargo,
CargosRayosGlosa.Codigo,
Cargos.[Apellidos Paciente] + Space(1) +
Cargos.[Nombres Paciente] AS PACIENTE,
CargosRayosGlosa.Informado,
CargosRayosGlosa.Medico,
InformadoHabil =
CASE ISNULL(LEN(CargosRayosGlosa.Medico),0)
WHEN 0 THEN
CargosRayosGlosa.Valor_Fonasa
ELSE
0
END,
‘En adelante comienza mi problema no funciona, le he colocado paréntesis y nada’
NoHabil =
CASE
WHEN CargosRayos.Habil = "HABIL" THEN
SELECT @Hora = CONVERT(CHAR(10),CargosRayos.Hora,108)
FROM CargosRayos
WHERE Cargo = 5050
exec Cons_HoraMedico @Hora, @Estado OUTPUT
ELSE
0
END
FROM (CargosRayosGlosa LEFT JOIN CargosRayos
ON CargosRayosGlosa.Cargo = CargosRayos.Cargo)
LEFT JOIN Cargos
ON CargosRayos.CargoReal = Cargos.Numero_Cargo
WHERE CargosRayos.Fecha BETWEEN @FechaInicial AND @FechaFinal AND
Cargos.Nulo = 0 AND
(CargosRay
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SP llama otro SP

Publicado por EDELRIO (540 intervenciones) el 22/08/2002 22:09:26
Que tipo de problema es el que ah tenido??
mencionelos por favor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SP llama otro SP

Publicado por Islas, Isaías (5072 intervenciones) el 22/08/2002 23:53:45
Perdonde Oscar, su codigo NO SUBIO TODO y ademas NO tiene coherencia alguna, la funcion CASE, esta explicada en los BOL de esta forma:

SELECT au_fname, au_lname,
CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas'
WHEN 'TN' THEN 'Tennessee'
WHEN 'OR' THEN 'Oregon'
WHEN 'MI' THEN 'Michigan'
WHEN 'IN' THEN 'Indiana'
WHEN 'MD' THEN 'Maryland'
WHEN 'UT' THEN 'Utah'
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname

Pero NUNCA dice que se pueda utilizar para hacer ciertos "trabajos extras", tales como usted los esta codificando:

CASE MyColumna
WHEN '1' THEN SELECT @MyVar = MyCol FROM MyTable WHERE MyCol = 2 EXEC PR_PROCEDIMENTO @MyVar
WHEN '2' THEN DROP TABLE MyTable END

El CASE anterio NO tiene coherencia NI FUNCIONARA NUNCA (O al menos lo lo vere).

En todo caso, ustede debe hacer "esos trabajos extras" fuera del SCOPE del SELECT

DECLARE @MyVar int, @MyCond int
SET @MyVar = 3 --INICIALIZO MI VARIABLE PARA HACER LA PRUEBA
SELECT @MyCond = (CASE @MyVar
WHEN 1 THEN 2
WHEN 2 THEN 3
WHEN 3 THEN 4 END)

IF @MyCond IN(1,3)
BEGIN
DROP TABLE MyTable
UPDATE MyTable SET MyCol = @MyCond
END
ELSE
BEGIN
SELECT 'Error, fuera de Scope'
RETURN(9)
END

Espero haberme explicado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar