在 Oracle 数据库中,我在一个包中有一些存储过程。当参数列表包含整数并且我尝试绑定 atSQLStoredProc
并导航到正确的过程时,Param
列表将参数列表中的整数显示为ftFMTBcd
而不是ftInteger
.
只要整数参数OUT
在 Oracle 中声明,传输就可以了。
但是如果整数在IN
列表中,我会ORA-05602
在调用过程时得到。
原因似乎是在 Datasnap 服务器中将ftFMTBcd
字段转换为整数只是失败,并且 Datasnap 服务器正在向 Oracle 发送一个空白字符串而不是整数或数字(参数列表IN INTEGER
和IN Number
参数列表最终ftFMTBcd
都以空白字符串结尾转移时)。
使用下表:
CREATE TABLE achristo_adm.paalogget(
paaloggetID NUMBER(38, 0) NOT NULL,
utstyrID NUMBER(38, 0),
BrukerID NUMBER(38, 0),
sist_paalogget TIMESTAMP(6),
CONSTRAINT PK22 PRIMARY KEY (paaloggetID)
USING INDEX
LOGGING)
LOGGING;
以及以下封装功能
PROCEDURE registrer_paalogget(
FUTSTYRID IN INTEGER,
FBRUKERID IN INTEGER,
FSIST_PAALOGGET IN TIMESTAMP,
fpaaloggetID OUT INTEGER) AS paaloggetC hl_recur_typ;
BEGIN
OPEN paaloggetC FOR SELECT paaloggetID FROM paalogget WHERE utstyrID = FUTSTYRID;
FETCH paaloggetC INTO fpaaloggetID;
IF paaloggetC%notfound THEN
fpaaloggetID := PAALOGGET_SEQ.NEXTVAL;
INSERT
INTO paalogget
(
paaloggetID,
utstyrID,
BrukerID,
sist_paalogget
)
VALUES
(
fpaaloggetID,
FUTSTYRID,
FBRUKERID,
FSIST_PAALOGGET
);
else
update paalogget
set
sist_paalogget=FSIST_PAALOGGET
where
utstyrID=FUTSTYRID;
END IF;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered in registrer_paalogget - '
||SQLCODE||' -ERROR- '||SQLERRM);
END registrer_paalogget;
这些在 Delphi-XE4 中会有同样的问题吗?(在 QC 中没有发现任何类似的东西)
如果在 Delphi-XE4 中仍然存在同样的问题,我必须在 QC 中输入 :-)
希望能够同时访问 Delphi XE4 (XE3) 和 Oracle XE 的人可以对此进行测试。
对我来说,可能的错误现在是一个阻碍。
添加在:
这个问题(我忘了标记为问题:-()是否会涉及?