oracle中存储过程为:
CHECK_ROUTE(LINE IN VARCHAR2,MYGROUP IN VARCHAR2, DATA IN VARCHAR2 ,RES OUT VARCHAR2), 
这个proc中有select,insert语句.执行过程式如下:
 DM1->PublicProc->Close();
 DM1->PublicProc->Parameters->Clear();
 DM1->PublicProc->Name  = "CHECK_ROUTE";//大写
 DM1->PublicProc->Refresh();
 DM1->PublicProc->Parameters->Items[0]->Value  = "111" ;
 DM1->PublicProc->Parameters->Items[1]->Value  = "1111";
 DM1->PublicProc->Parameters->Items[2]->Value  = "fdfd";
 DM1->PublicProc->Prepared = true;
 DM1->PublicProc->ExecProc();
 Edit_Next_station->Text =  DM1->PublicProc->Parameters->ParamByName("res")->Value;抛出错误提示为: Eaccess Violation.
在PublicProc属性页面调试如果Active 选True,则错误信息:Command Text does not return a result set.

解决方案 »

  1.   

    你好像没有指定参数名
    参考:
    TStoredProc   *sp_Refresh;   
      sp_Refresh->StoredProcName=   "存储过程名";   
      sp_Refresh->Params->Clear();                                                                                       
      sp_Refresh->Params->CreateParam(ftString,   "参数1",   ptInput);   
      sp_Refresh->Params->CreateParam(ftString,   "参数2",   ptInput);   
      ...//所有参数   
      sp_Refresh->Params->ParamByName("参数1")->AsString   =   "a";   
      sp_Refresh->Params->ParamByName("参数2")->AsString   =   "b";   
      ...//将所有参数赋值   
      sp_Refresh->Prepare();   
      sp_Refresh->ExecProc();
      

  2.   

    Active 不能选True吧,Active选True是设计时在控件中显示记录集,当然你的SQL应该是要返回记录集的,如果不返回记录集,就不能设置为True!
      

  3.   

    顶楼上,好久没用BCB了.
    楼主在绑定变量时没有标明参数类型,即是In还是Out