2011-02-17 4 views
0

바인드하거나이 Oracle SQL 쿼리로 전달할 숫자 목록이 있습니다.PHP와 oci_bind_by_name을 사용하여 값 목록을 Oracle에 전달하십시오.

SELECT 
    ad.lastname, ad.name, a.cc cc, sum(a.qt) qt 
FROM a, ad 
    where (ad.ci in (:idList) or (:idList is null)) 
    and ad.ci (+) = a.ci 
    And A.Type = 'R' 
    And A.Cc In ('SIDI','SIND','RSU') 

id 목록을 포함하는 문자열로 idList를 바인딩하려면 oci_bind_by_name 명령을 사용할 수 있습니까? Ids를 seralizes 문자열로 볼 수 있을까?

예 :

그것은 실행할 수없는 것 같다 "그냥"직렬화 된 목록은 SQL 구문의 일부가 아니므로. 내 목표에 도달하기위한 아이디어가 있습니까?

답변

0

문자열로이를 수행 할 수 없습니다 (SQL로 ID 목록을 토큰 화하지 않는 한).

oci_bind_by_name에는이 경우 문자열이 필요합니다.

+0

내가 틀렸다면 정정 해주세요. 그렇지만 oci_bind_by_name은 문자열을 바인드 매개 변수로 받아 들일 것입니다. 'bool oci_bind_by_name (리소스 $ 문, 문자열 $ bv_name, 혼합 및 $ 변수 [, int $ maxlength = -1 [, int $ type = SQLT_CHR])''[http://www.php.net/manual/en/ function.oci-bind-by-name.php] (http://www.php.net/manual/en/function.oci-bind-by-name.php) –

+1

또한 모든 바인딩 자리 표시 자 특별해야 해. ': idList) 또는 (: idList' –