怎样调用带参数的存储过程

kinglh 2003-09-04 05:52:44
我在SQL2000 Server做了一个带int 参数的存储过程,在BCB中用TADOStorePorcz组件调用出现错误提示:Project Name.exe raised exception,class EDatabaseError with message 'StoredProc:Parameter '@inta' not found'. Procss stopped Use step or Run to continune

我在一个按钮事按里写:
AnsiString PName= ProcName ;
Date_Form->StoredProc->Close();
Date_Form->StoredProc->ProcedureName=PName;
//Date_Form->StoredProc->Parameters->Items[1]->Value=1;
Date_Form->StoredProc->Parameters->ParamByName("@times")->Value="1";
Date_Form->StoredProc->ExecProc();
我用的是CB6,请高手指点一下!
...全文
124 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunmedia 2003-09-10
  • 打赏
  • 举报
回复
你的写法没有错,是你的传入参数名称写的不对罢了,从你的存储过程来看,你根本没有@inta这个参数,而你引用不错才怪,完整的代码:
Date_Form->StoredProc->Close();
Date_Form->StoredProc->ProcedureName=="Send_Msg";//获取存储过程名字;
然后你在存储过程的属性里设置存储过程的名称和输入输出参数;当然也可以在代码中指定这些参数,如果在代码中指定参数,就按照楼上说的写就可以了;
至于调用存储过程,就这样写
Date_Form->StoredProc->Parameters->ParamByName("@times")->Value="1";
Date_Form->StoredProc->ExecProc();
int iCount = Date_Form->StoredProc->Parameters->ParamByName("@Count")->Value;
// iCount中的值就是存储过程的返回值
xiaokange 2003-09-10
  • 打赏
  • 举报
回复
可以定义一个变量如下:
int count;
Date_Form->StoredProc->Close();
Date_Form->StoredProc->ProcedureName="Send_Msg";//获取存储过程名字
Date_Form->StoredProc->Parameters->Clear();
Date_Form->StoredProc->Parameters->CreateParameter ("@times",ftInteger,pdInput,1,NULL);//获取参数
Date_Form->StoredProc->Parameters->CreateParameter("@Count",ftInteger,pdOutput,1,0);
Date_Form->StoredProc->Parameters->ParamByName("@times")->Value="1";
Date_Form->StoredProc->ExecProc();
count=Date_Form->StoredProc->Parameters->ParamByName("@Count")->Value;
count就是你要获取的值
zhpsam109 2003-09-10
  • 打赏
  • 举报
回复
把StoreProc控件删除,然后重新来一次!
zhpsam109 2003-09-10
  • 打赏
  • 举报
回复
把StoreProc控件删除,然后重新来一次!
peasant 2003-09-09
  • 打赏
  • 举报
回复
再定义一个参数@Count(fpOutput类型),然后
Date_Form->StoredProc->Parameters->ParamByName("@Count")->Value
xiaofeng007 2003-09-08
  • 打赏
  • 举报
回复
值得收藏
kinglh 2003-09-08
  • 打赏
  • 举报
回复
那位朋友知道请赐教一下啊!! 急!!!
kinglh 2003-09-08
  • 打赏
  • 举报
回复
我在存储过程中还定义一个参数是这样写的:
create PROCEDURE Send_Msg
@times int =1 ,@Count int =0 output //用来反回一个int 的值
as
...
我要在CB中的一个按钮事件里得到这个@count值 请问一下 xiaokange(小侃哥) 怎样写????

谢谢!!
Robin 2003-09-07
  • 打赏
  • 举报
回复
hehe !
52vc 2003-09-07
  • 打赏
  • 举报
回复
你定义的那那@inta在哪里呢?
详细一点,把完整的放上来
xiaokange 2003-09-07
  • 打赏
  • 举报
回复
这样写就可以了
Date_Form->StoredProc->Close();
Date_Form->StoredProc->ProcedureName="Send_Msg";//获取存储过程名字
Date_Form->StoredProc->Parameters->Clear();
Date_Form->StoredProc->Parameters->CreateParameter ("@times",ftInteger,pdInput,1,NULL);//获取参数
Date_Form->StoredProc->Parameters->ParamByName("@times")->Value="1";
Date_Form->StoredProc->ExecProc();
kinglh 2003-09-06
  • 打赏
  • 举报
回复
存储过程中是这样写的
create PROCEDURE Send_Msg
@times int =1
as
...
我在一个按钮事按里写:
AnsiString PName= "Send_Msg";
Date_Form->StoredProc->Close();
Date_Form->StoredProc->ProcedureName=PName;
//Date_Form->StoredProc->Parameters->Items[1]->Value=1;
Date_Form->StoredProc->Parameters->ParamByName("@times")->Value="1";
Date_Form->StoredProc->ExecProc();
我用的是CB6,请高手指点一下!
kinglh 2003-09-05
  • 打赏
  • 举报
回复
我就是在存储过程中定义了这个'@inta' ,就是这样出问题啊!
编译失败 2003-09-05
  • 打赏
  • 举报
回复
那就是了,在存儲過程中有這個參數,而且沒有默認值,可是你調用的時候卻沒給這個參數賦值,那不出錯才怪。
pobosskey 2003-09-04
  • 打赏
  • 举报
回复
提示不是说你'@inta' 这个参数没发现吗 ,检查一下存储过程是不是有这个参数的?
kinglh 2003-09-04
  • 打赏
  • 举报
回复
在线等,分少了可以再给!!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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