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

您是否在 DB2 中编译过 SP?那个SP不行,你要怎么办?从局部变量中选择填充值?将光标返回给调用者?

首先,确保您的 SP 在 DB2 中工作,然后尝试从外部应用程序中使用。你从哪里得到这个错误?你确定显示的SP是数据库中的那个吗?

当您在 DB2 中遇到问题时,最重要的是要显示 SQLCODE。文本和消息对于理解问题毫无意义。

另外,检查 SP,一个 varchar 列最多可以有 256 个字符,而你有 1000 个。相反,小的 char 列最好使用 CHAR 而不是 VARCHAR 以减少开销。

于 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 回答