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中创建组字段。