我现在暂时的解决方法是将零时表B中的参数类型换成了string array,
这样就能正常的捞取资料了,
请教了pb8,他说是因为字段ORFMRID是char型,里面有空格,导致资料类型不正确
SELECT A.EFMFID,
A.EFMMID,
A.EFMNAME,
A.EFMMETHOD,
A.EFMUPPICT,
A.EFMDNPICT,
A.EFMCHECK,
A.EFMVISIBLE,
A.EFMHINT,
A.EFMMICOHELP,
A.EFMTBITEMINDEX,
A.EFMTBITEMORDER,
A.EFMTBITEMSPACE,
case IsNUll(B.ORFMRID,'*')
when '*' then 'N'
else 'Y'
end FLAG
FROM ERPFUNCMETHOD AS A
LEFT OUTER JOIN
(SELECT ORFMRID,ORFMFID,ORFMETHOD
FROM OPERRFMETHOD WHERE ORFMRID in (:as_role) ) AS B
ON A.EFMFID=B.ORFMFID AND A.EFMMID=B.ORFMETHOD
WHERE A.EFMFID = :as_func
ORDER BY A.EFMTBITEMORDER
暂时还是不知道具体原因。
我发现把sql写成
SELECT A.EFMFID,
A.EFMMID,
A.EFMNAME,
A.EFMMETHOD,
A.EFMUPPICT,
A.EFMDNPICT,
A.EFMCHECK,
A.EFMVISIBLE,
A.EFMHINT,
A.EFMMICOHELP,
A.EFMTBITEMINDEX,
A.EFMTBITEMORDER,
A.EFMTBITEMSPACE,
( case IsNUll(B.ORFMRID,'*') when '*' then 'N'
else 'Y' end )FLAG
FROM ERPFUNCMETHOD A ,
OPERRFMETHOD B
WHERE A.EFMFID = :as_func and
A.EFMFID *= B.ORFMFID and
A.EFMMID *= B.ORFMETHOD and
B.ORFMRID = :as_role
ORDER BY A.EFMTBITEMORDER
就没有问题了,但是这样的话资料又不是我想要的了,
因为B.ORFMRID = :as_role 这个条件相当于没有起到作用,
所以请大家帮忙看下,
是不是说PB中零时表里面不能使用参数(as_role)的.