1

私はjqueryとdb2を使用しています。実行時間のエラーを下回っています

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

私のDB2 SQL

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;
END@
4

2 に答える 2

0

SPをDB2でコンパイルしましたか?そのSPは機能しません、あなたは何をするつもりですか?ローカル変数の選択から値を入力しますか?カーソルを発信者に戻しますか?

まず、SPがDB2で動作することを確認してから、外部アプリケーションから使用してみてください。そのエラーはどこで発生しましたか?表示されているSPがDB内のものであると確信していますか?

DB2で問題が発生した場合、表示する最も重要なことはSQLCODEです。テキストやメッセージは問題を理解するのに無意味です。

また、SPを確認してください。varchar列は最大256文字で、1000文字です。逆に、オーバーヘッドを減らすには、VARCHARではなくCHARを使用する方が小さいchar列の方が適しています。

于 2012-09-26T03:11:47.263 に答える
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;

上記の修正を行った後、エラーはなくなりました。

于 2012-10-01T18:02:38.503 に答える