2014-02-11 1 views
0

NUMERIC의 단일 매개 변수로 PostgreSQL에서 함수를 작성했습니다. SqlDataProvider 구성 요소를 통해 Yii 프레임 워크를 사용하여 개발 된 웹 응용 프로그램에서이 함수를 호출하려고합니다.PostgreSQL에서 Yii를 통해 숫자 매개 변수에 NULL 값을 전달하십시오.

Ivalid input syntax for type 'numeric'. 

내가 PhpPgAdmin를 통해 직접 기능을 실행하려고 할 때마다, 모든 것이 완벽하게 작동하는 것 같다 그러나, 때마다 매개 변수 값이 비어, 나는 다음과 같은 오류가 계속. 다음은

이 논의 PL/pgSQL의 기능 search(..) 코드입니다 다음 YII 모델에서

search("itemcode" character varying DEFAULT NULL, "taxpercentage" numeric DEFAULT NULL) 
LANGUAGE plpgsql 
    AS $$ 
BEGIN 
    SELECT * FROM item WHERE (itemcode IS NULL OR item.item_code LIKE itemcode||'%') 
     AND (taxpercentage IS NULL OR item.tax_percentage = taxpercentage); 
END; 
$$; 

, 나 또한 다시 데이터베이스 수준의 PL/pgSQL의 함수를 호출하는 검색 기능을 만들었습니다

public function search() 
    {  
     $count=Yii::app()->db->createCommand("SELECT COUNT(*) FROM search('$this->item_code','$this->tax_percentage')")->queryScalar(); 
     $sql="SELECT * FROM search('$this->item_code','$this->tax_percentage')"; 
     $dataProvider=new CSqlDataProvider($sql, array(
     'totalItemCount'=>$count, 
     'pagination'=>array(
     'pageSize'=>10, 
     ), 
     )); 
     return $dataProvider; 
    } 

NUMERIC 유형의 매개 변수에 NULL 값을 전달하려면 어떻게해야합니까?

모든 도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

+0

전체 기능 정의를 표시하십시오 –

+0

@a_horse_with_no_name 기능이 매우 길기 때문에 phppgadmin에서 제대로 실행되므로 기능에 문제가 없습니다. 문제는 yii 프레임 워크에서 값을 전달할 때입니다. 또한 null 값만 사용하여 문제가 발생합니다. 다른 값을 전달하면 작동합니다. – user1690835

+0

@ user1690835 : psql에서 실행되는 경우 서명을 제공하고 yii가 그것을 찾을 수있는 경우이를 호출하는 방법을 강조 표시합니다. yii의 ORM에 문제가있어 예를 들어 param에 매개 변수를 채우는 것입니다. 빈 문자열 또는 뭔가. –

답변

0

검색 기능에서 비어 있는지 확인하고 매개 변수가있는 쿼리를 사용하여 해결했습니다. 따라서 수정 된 함수는 Postgres의 함수에 유효한 코드가 아닙니다.

public function search() 
    {  
if(empty($this->tax_percentage)) 
     $this->tax_percentage=null; 

    $count=Yii::app()->db->createCommand("SELECT COUNT(*) FROM search(:item_code,:tax_percentage)")->queryScalar(); 
    $sql="SELECT * FROM search('$this->item_code','$this->tax_percentage')"; 
    $dataProvider=new CSqlDataProvider($sql, array(
    'params' => array(':item_code' => $this->item_code,':tax_percentage' => $this->tax_percentage), 
    'totalItemCount'=>$count, 
    'pagination'=>array(
    'pageSize'=>10, 
    ), 
    )); 
    return $dataProvider; 
} 
관련 문제