ado连接oracle,使用参数化查询遇到奇怪的问题,求解

Row_Li 2009-10-28 04:04:31
数据库中col_a的类型为 NUMBER(12)

_variant_t vtValue;

vtValue.vt = VT_I8;
vtValue.llVal = (long long)100020003000;

Cmd1->CommandText = _bstr_t(L"select a from table_b where col_a = :col_a");

// Create Parameter Object.
Param1 = Cmd1->CreateParameter( _bstr_t(L":col_a"),
ADODB::adBigInt,
ADODB::adParamInput,
8,
vtValue );
Cmd1->Parameters->Append( Param1 );

// Open Recordset Object.
Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, ADODB::adCmdText );

但在Execute时一直抛出数据库错误“ORA-01722: 无效数字”。
但如果传入了一个long值为11的数据,就能正确找到数据。

不明白为啥为是这个错误,求达人解答。谢谢!
...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Row_Li 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dirdirdir3 的回复:]
引用 5 楼 row_li 的回复:
引用 1 楼 tr0j4n 的回复:
longlong对Oracle的Number来说太大了
你不能这么搞

不解,数据类型是number(12),12位数应该到long long了吧。

如果我数据库中是100020003000这样的数据,用int,long都不够存储,请问应该用怎样的类型才能传进去?谢谢了。


数组传.......
[/Quote]

你好,能具体一点吗?能最好弄个关键示范代码吗?没有用vc弄过东西,对这个模型不是很了解。谢谢了。
dirdirdir3 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 row_li 的回复:]
引用 1 楼 tr0j4n 的回复:
longlong对Oracle的Number来说太大了
你不能这么搞

不解,数据类型是number(12),12位数应该到long long了吧。

如果我数据库中是100020003000这样的数据,用int,long都不够存储,请问应该用怎样的类型才能传进去?谢谢了。
[/Quote]

数组传.......
Row_Li 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tr0j4n 的回复:]
longlong对Oracle的Number来说太大了
你不能这么搞
[/Quote]
不解,数据类型是number(12),12位数应该到long long了吧。

如果我数据库中是100020003000这样的数据,用int,long都不够存储,请问应该用怎样的类型才能传进去?谢谢了。
Oliver2891 2009-10-28
  • 打赏
  • 举报
回复
同意
zhaohongbo83 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tr0j4n 的回复:]
longlong对Oracle的Number来说太大了
你不能这么搞
[/Quote]

就是超出范围了!
wnx_u 2009-10-28
  • 打赏
  • 举报
回复
还有这种道理,晕
MoXiaoRab 2009-10-28
  • 打赏
  • 举报
回复
longlong对Oracle的Number来说太大了
你不能这么搞

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧