2012-09-23 7 views
1

jquery와 db2를 사용하고 있습니다. 나는
DB2의 다중 매개 변수

Error:SQL:The OdbcParameterCollection only accepts non-null OdbcParameter type objects, not OleDbParameter objects. 

Create procedure myparameters(
IN vname VARCHAR(500), 
IN vurl VARCHAR(1000), 
IN vyear VARCHAR(10), 
IN vmonth VARCHAR(10) 
) 
language sql 
BEGIN ATOMIC 
SET vname = '~p_hostname~'; -- these tild values are coming from jquery 
SET vurl = '~p_url~'; 
SET vmonth = '~p_month~'; 
SET vyear = '~p_year~'; 
select hour as hours,tvalue as seconds from myschema.my_view 
WHERE 
    name = vname and 
    url= vurl and 
    month = CAST(vmonth AS INT) and 
    year = CAST(vyear AS INT) and 
    VALUE_TYPE ='access Time' 
order by hour; 
[email protected] 
+0

null 값을 vname (또는 다른 매개 변수)에 전달했는지 확인하고 name = vname과 같은 predicat를 사용하십시오. 이 경우 오류가 발생합니다. "IS NULL"을 사용하여 null 값이나 "NAME = COALESCE (VNAME, '')"과 같은 술어를 확인하십시오. – Alexey

+0

오류 메시지가 표시 될 때 Java 코드도 볼 필요가 있다고 생각합니다. 그리고 우리에게 준 SQL은 실제로 실행됩니까? 그렇지 않으면 유효합니다 ... @Alexey - 불행히도, 오류 메시지는 null이 Java 측에서오고 있음을 나타냅니다. 전달 된 null을 확인하는 것이 좋은 조언이지만 나머지는 덜 도움이됩니다. 한 가지는 null을 '='로 비교하면 오류를 반환하지 않습니다. 그리고 'COALESCE()'를 사용하여 비교하면 쿼리의 의미가 바뀌므로 원하는 바가 아닐 수도 있습니다. –

답변

0

내 문제가 해결

//I defined variable in jquery like this: 
var parameter; 
parameter += '|p_hostname=' + $('#hname').val(); 
parameter += '|p_url=' + $('#hurl').val(); 
parameter += '|p_month=' + $('#hMonth').val(); 
parameter += '|p_year=' + $('#hYear').val(); 

--db2 SQL-- 
select 
    url as URL 
    ,hour as Time 
    ,value as URL_Time 
from myschema.my_view 
where 1=1 
    and name = '~p_hostname~' 
    and url ='~p_url~' 
    and cast(month as int) = cast('~p_month~' as int) --Problem occured here 
    and cast(year as int) = cast('~p_year~' as int) --Problem occured here 
    and VALUE_TYPE ='access Time' 
order by 
    hour; 

오류 수정 위의 일을 후에왔다.

0

내 DB2의 SQL 사용자가 DB2에서 SP를 컴파일 실행 시간에 오류 아래는 무엇입니까? 그 SP는 작동하지 않습니다, 당신은 무엇을 할 것입니까? 지역 변수의 선택에서 값을 채우시겠습니까? 발신자에게 커서를 되돌려 놓으시겠습니까?

먼저 SP가 DB2에서 작동하는지 확인한 다음 외부 응용 프로그램에서 사용하십시오. 그 오류는 어디서 났니? 표시된 SP가 DB에 있는지 확인 하시겠습니까?

DB2에서 문제점이 발생하면 가장 중요한 것은 SQLCODE입니다. 텍스트와 메시지는 문제를 이해하는 데 의미가 없습니다.

또한 SP를 확인하십시오. varchar 열은 최대 256 자까지 가능하며 1000을 사용합니다. 반대의 경우 작은 char 열은 VARCHAR 대신 CHAR을 사용하여 오버 헤드를 줄이는 것이 좋습니다.

관련 문제