Victor大哥,偶在用BCB的TStoredProc遇到问题
在MSSQL2000里建了个存储过程
CREATE PROCEDURE dbo.calwage
@nian char(4) ,@yue char(2),@yrate int,@jrate float,@trate float,@srate float 。。。。。。。
在BCB6里用StoredProc和它连,然后对参数赋值并运行
StoredProc1->ParamByName("@nian")->Value=Edit1->Text;
StoredProc1->ParamByName("@yue")->Value=Edit2->Text;
StoredProc1->ParamByName("@yrate")->Value=yrate;//yrate、jrate、trate、srate的类型都没错
StoredProc1->ParamByName("@jrate")->Value=jrate;
StoredProc1->ParamByName("@trate")->Value=trate;
StoredProc1->ParamByName("@srate")->Value=srate;
StoredProc1->Prepare();
StoredProc1->ExecProc();
但老报错,错误是“storedproc1:No Parameter type for Parameter '@nian'”,是什么原因啊?
(存储过程没错,在查询分析器里运行“exec calwage @nian='2003',@yue='1',@yrate=3,@jrate=0.1,@trate=0.06,@srate=0.05”可以得到正确的结果)
--------------------next---------------------
有以下几个步骤:
1、把TADOStoredProc或TStoredProc放到窗体上。
2、设置参数连接到MS SQL Server数据库。
3、设置ProcedureName参数,指定存储过程名,也可以在程序运行期设置。
4、单击TParameters边上的省略号按钮,如果设置正确,则可看到所有的输入输出参数。
5、在代码中设置存储过程的输入参数、执行存储过程并获取返回的数据。
通过调用TADOStoredProc控件的parambyname方法,设置好所有的输入参数,再调用open方法执行存储过程。如果存储过程返回参数,同样用parambyname方法获取参数值,如果返回数据集,则用访问数据集的TFields的方法获取各记录。如以下代码所示:
ADOStoredProc1->close;
ADOStoredProc1->parameters->parambyname('@u_name')->value='某某人';
ADOStoredProc1->prepared=true;
ADOStoredProc1->open;
label1.caption= ADOStoredProc1->fields[0]->asstring;
--------------------next---------------------
阅读(1061) | 评论(0) | 转发(0) |