【发布时间】:2011-10-10 07:00:04
【问题描述】:
我正在尝试将条件附加到 where 子句。但包含条件的字符串不起作用。我没有收到任何错误,但条件未完全应用于查询
这是查询。我将 CLINIC_ID 和 taleEnd 传递给我的存储过程。taleEnd 将包含一个或更多类似的条件 - “和 DOS 在 '2011-09-08' 和 '2011-10-08' 之间”
SELECT *
FROM A
JOIN B ON C.CLINIC_ID = VP.CLINIC_ID AND C.CLAIM_ID = VP.CLAIM_ID
JOIN C ON P.CLINIC_ID = VP.CLINIC_ID AND P.PATIENT_ID = VP.PATIENT_ID
JOIN D ON I.CLINIC_ID = C.CLINIC_ID AND I.INSURANCE_ID= C.PRIMARY_INSURANCE_ID
JOIN E ON B.CLINIC_ID = I.CLINIC_ID AND B.BUSINESS_ID= I.COMPANY_ID
WHERE (VP.STATUS = 3 OR VP.STATUS = 5)
AND VP.PRIMARY_PAID = 0
AND VP.PRIMARY_PENDING > 0
AND C.PRIMARY_PAYER_ID > 0
AND C.HIDEN = 0
AND VP.CLINIC_ID = CLINIC_ID + taleEnd
问题是,当我运行存储过程时,只应用了 Clinic_id 而不是 DOS。我尝试了 concat ,设置但没有任何效果。我没有收到任何错误,但结果不适用于 DOS。任何人都可以帮助我请。
@Devart 这是存储过程。
CREATE DEFINER=`root`@`%` PROCEDURE `PRIMARY_INSURANCE_AGING`(CLINIC_ID INT,taleEnd TEXT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS PRIMARY_TEMP;
CREATE TEMPORARY TABLE PRIMARY_TEMP
SELECT *
FROM A
JOIN B ON C.CLINIC_ID = VP.CLINIC_ID AND C.CLAIM_ID = VP.CLAIM_ID
JOIN C ON P.CLINIC_ID = VP.CLINIC_ID AND P.PATIENT_ID = VP.PATIENT_ID
JOIN D ON I.CLINIC_ID = C.CLINIC_ID AND I.INSURANCE_ID= C.PRIMARY_INSURANCE_ID
JOIN E ON B.CLINIC_ID = I.CLINIC_ID AND B.BUSINESS_ID= I.COMPANY_ID
WHERE (VP.STATUS = 3 OR VP.STATUS =5 )
AND VP.PRIMARY_PAID = 0
AND VP.PRIMARY_PENDING > 0
AND C.PRIMARY_PAYER_ID > 0
AND C.HIDEN = 0
AND VP.CLINIC_ID = CLINIC_ID + taleEnd;
END
这是Prepare语句的用法
SET @A = CONCAT(34847," and DOS between '2011-09-08' and '2011-10-08'");
PREPARE STMT FROM '
SELECT *
FROM A
JOIN B ON C.CLINIC_ID = VP.CLINIC_ID AND C.CLAIM_ID = VP.CLAIM_ID
JOIN C ON P.CLINIC_ID = VP.CLINIC_ID AND P.PATIENT_ID = VP.PATIENT_ID
JOIN D ON I.CLINIC_ID = C.CLINIC_ID AND I.INSURANCE_ID= C.PRIMARY_INSURANCE_ID
JOIN E ON B.CLINIC_ID = I.CLINIC_ID AND B.BUSINESS_ID= I.COMPANY_ID
WHERE (VP.STATUS = 3 OR VP.STATUS = 5)
AND VP.PRIMARY_PAID = 0
AND VP.PRIMARY_PENDING > 0
AND C.PRIMARY_PAYER_ID > 0
AND C.HIDEN = 0
AND VP.CLINIC_ID ? ';
EXECUTE STMT USING @A;
【问题讨论】:
-
啊哈,我明白了您要执行的操作,即将其他过滤条件(包括字段名称)传递给您希望在执行期间应用于查询的过程。在这种情况下,恐怕我不确定该怎么做,但如果你得到答案,我会对答案感兴趣!!!
-
@Dave Rix 是的,你是绝对正确的..但我无法摆脱这个......:-(