1
嘗試使用此存儲過程時,我不知道如何傳遞空值作爲參數。 我離開了我的存儲過程的結構以及我如何嘗試使用它。在Informix的存儲過程中傳遞參數爲空
CREATE PROCEDURE SAFUP001(Padre INT, Paciente INT, AtenSol SMALLINT,
PersSol INT, ServSol INT, ActSol INT,
AtenEje SMALLINT, PersEje INT, ServEje INT,
ActEje INT, Prog INT, Grup INT,
Fecha DATETIME YEAR TO SECOND, FP INTEGER)
RETURNING INT, INT; --Funcion, CtaCte
DEFINE Func, x7, x8 INT;
set debug file to "safup001.trc";
trace on;
IF FP IS NULL THEN
IF Padre IS NOT NULL THEN
LET x7,x8 = (SELECT A.PrevPac, A.PrevInst
FROM SAFUV001 A
WHERE A.Codigo = Padre);
ELSE
LET FP = (SELECT A.FormaPago FROM SAPAV012 A
WHERE A.CodPacie = Paciente);
LET x7,x8 = (SELECT B.PagoPac, B.PagoPersona
FROM SABST031 B
WHERE B.Codigo = FP);
END IF;
ELSE
LET x7,x8 = (SELECT B.PagoPac, B.PagoPersona FROM SABST031 B
WHERE B.Codigo = FP);
END IF;
IF Fecha IS NULL THEN
LET Fecha = CURRENT YEAR TO SECOND;
END IF;
IF Grup IS NULL THEN
INSERT INTO SAFUT003 (Codigo, Paciente, FechaInicio, Atencion, Tipo)
VALUES (0, Paciente, Fecha, AtenEje, 1);
LET Grup = (SELECT MAX(A.Codigo) FROM SAFUT003 A
WHERE A.Paciente = Paciente);
ELSE
IF EXISTS(SELECT * FROM SAFUT003 A WHERE A.Codigo=Grup AND
A.CierrePar IS NOT NULL AND A.CierreFinal IS NULL) THEN
UPDATE SAFUT003 SET CierrePar = NULL WHERE Codigo = Grup;
END IF;
END IF;
INSERT INTO SAFUT001 (Codigo, Paciente, Padre, Fecha, AtencionSol,
PersonaSol, ServicioSol, ActividadSol, AtencionEje,
PersonaEje, ServicioEje, ActividadEje, Programa, Grupo,
PrevPac, PrevInst)
VALUES (0, Paciente, Padre, Fecha,AtenSol, PersSol, ServSol, ActSol,
AtenEje, PersEje, ServEje, ActEje, Prog, Grup, x7, x8);
LET Func= (SELECT Max(A.Codigo) FROM SAFUT001 A WHERE A.Grupo = Grup);
RETURN Func, Grup;
END PROCEDURE;
以及執行查詢了下:
EXECUTE PROCEDURE SAFUP001 (0,781780,0,707,26,48,1,707,26,59,0,NULL,TO_DATE('2017-04-03 12:00:00','%Y-%m-%d %H:%M:%S'),14)
如果有人對如何空值傳遞給存儲過程的例子,我將不勝感激他們足夠的,因爲我有問題我的存儲過程的字段組,因爲我無法輸入以在表SAFUT003中創建組字段。