Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341335
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:07:33

 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) |
给主人留下些什么吧!~~