Firebird跨数据库调用存储过程返回无结果集问题求助
Firebird跨数据库调用存储过程返回无结果集问题求助
嗨,各位Firebird大佬,我碰到一个头疼的问题想请教下:我需要在当前数据库的存储过程里调用另一个远程数据库的存储过程,拿到它的结果集来做后续处理,但每次调用都返回空行,就像目标表完全没有数据一样。
先给大家看下两个存储过程的代码:
源数据库中的存储过程(被调用方)
CREATE OR ALTER PROCEDURE get_scanner_active_tags_by_hh_type ( scannerreferenceid TYPE OF COLUMN scanners.referenceid, hourtype TYPE OF COLUMN tagscannerpairings.hourtype ) RETURNS ( tagid TYPE OF COLUMN tagscannerpairings.tagid ) AS BEGIN FOR SELECT tagid FROM tagscannerpairings tsp JOIN scanners so ON tsp.scannerreferenceid = so.referenceid WHERE EXISTS ( SELECT * FROM scanners si WHERE TRIM(TRAILING FROM si.referenceid) = TRIM(TRAILING FROM tsp.scannerreferenceid) AND si.referenceid = :scannerreferenceid) AND ison = 'T' AND hourtype = :hourtype ORDER BY tagid INTO :tagid DO SUSPEND; END
当前数据库中的问题存储过程(调用方)
CREATE OR ALTER PROCEDURE write_hh_records ( scannername vchar30_req, hh_type hour_type ) RETURNS ( tagid INTEGER ) AS BEGIN FOR EXECUTE STATEMENT ('EXECUTE PROCEDURE get_scanner_active_tags_by_hh_type(:scanner, :hh);') (scanner := :scannername, hh := :hh_type) AS USER '<user>' PASSWORD '<password>' ROLE '<role>' ON EXTERNAL 'xx.xx.x.xx/3050:Config' INTO :tagid DO SUSPEND; END
我已经确认源数据库里的get_scanner_active_tags_by_hh_type单独执行是能返回正确结果的,但通过write_hh_records跨库调用就完全拿不到数据。我自己排查了一些方向,但没找到问题所在,想请大家帮忙分析下可能的原因,或者给点排查的思路?
比如会不会是跨库调用时的参数传递有类型匹配问题?或者权限、连接字符串的配置有疏漏?
备注:内容来源于stack exchange,提问作者Anthony Voronkov
相关产品推荐
相关产品推荐

