打印

C++调用存储问题

[复制链接]
1046|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2012-4-11 18:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C++, TE, sql, TI, ST
//用GetErro()得到的错误..
[Microsoft][ODBC SQL Server Driver]字符串数据,右截位
[Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误
//下面是代码--
//----存储过程---输入/输出参数部分
CREATE PROCEDURE [dbo].[Bankpayment_querybill]  
@tradeid VARCHAR(14),  
@unit VARCHAR(4),
@apptype VARCHAR(4),  
@counter VARCHAR(30),  
@bankcode VARCHAR(3),   
@zipcode VARCHAR(7),   
@tel VARCHAR(21),  
@tradetime datetime,   
-- 输出
@outTradeid VARCHAR(14) output,  
@outStartdate datetime output,
@outEnddate datetime output,  
@outDetailcount int output,  
@outDetail VARCHAR(256) output,
@outAccountName VARCHAR(100) output,
@outResultcode int output,  
@outContract VARCHAR(20) output,  
@outActualpyment NUMERIC(12, 2) output,  
@outActualcost NUMERIC(12, 2) output,   
@outStatistResultAccountid int output   

//调用过程的参数是用结构体传的---下面是结构体
typedef struct _TelChargeInquires
{
char packageLen[4];   
char operateNo[4];   
  char unitNo[4];   
char feeBank[10];   
char feeUser[10];   
char tradingSerialNum[14];   
char tradingTime[14];   
char appType[4];   
char bankBarCode[30];   
char bankCode[3];   
char responseSerialNum[14];   
char tradingReturnCode[2];   
char information[40];   
char areaCode[7];   
char telNumber[16];   
char userName[30];   
char contractNumber[20];   
char feeStartTime[8];   
char feeEndTime[8];   
char feeDetailCount[2];   
char feeDetails[FEE_DETAIL_MAX_LEN];
}TelChargeInquires;
typedef struct _QueryBillData  
{
int Detailcount;
double feeBank;   
double feeUser;
int StatistResultAccountid;  
char tradingTime[25];
char tradingSerialNum[14];
char telNum[16];
int Resultcode;
}QueryBillData;

//调用函数,在数据库类里边..一些必要的初始化...省略了.
DB_ChargeInquires(TelChargeInquires &CInquires,QueryBillData &QueryData)
{
//.....申请语句句柄什么的...
//...绑定参数
Ret = SQLBindParameter(Hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,14,0,CInquires.tradingSerialNum,14,&cbTemp);
Ret = SQLBindParameter(Hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,4,0,CInquires.unitNo,4,&cbTemp);
...
....
  sprintf(SQLStr,"call Bankpayment_querybill(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

Ret = SQLExecDirect(Hstmt,(SQLCHAR *)SQLStr, SQL_NTS);
//-----就是这里Ret一直返回 -1;
//----然后用GetError()得到的是如上所说的错误
//---字符串数据,右截位.
}
还有我想问下?
1---- 对于 存储过程里的 datetime 类型...C里面该用什么类型去SQLBindParameter这个参数?
2---- 对于 存储过程里的 NUMERIC(12, 2) 类型,该用什么类型,还有SQLBindParameter 函数里的实参怎么配置?

相关帖子

沙发
yybj| | 2012-4-11 19:09 | 只看该作者
没太弄明白,帮LZ顶一下吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝