存储过程为:
use xuejiguanli
go
create proc xueji_selecteXueSheng
@XueHao varchar(20)
as
begin
select * from XueSheng where XueHao=@XueHao
end
delphi中的语句为
with sp_selectXueSheng do
begin
  Close;
  ProcedureName := 'xueji_selecteXueSheng';
  Parameters.Clear;
  Parameters.CreateParameter('XueHao',ftString,pdInput,20,Trim(edt_XueHao.Text));
  ExecProc;
end;
但是执行后,在DBGRID中没有变化

解决方案 »

  1.   

    看你儲存過程是返回數據集的,所以不應該用執行,而是應該是:Open;
    另外因為儲存過程都有一個缺省返回值的參數@Return_Value,這個是否要加你可試試。
      

  2.   

    with sp_selectXueSheng do
    begin
      Close;
      SQL.Text:='xueji_selecteXueSheng '+Quotedstr(Trim(edt_XueHao.Text));
      Open;
    end;
      

  3.   

    抱错了~~我用的是存储过程的,用TADOSTOREDPROC
      

  4.   

    你直接在控件上選擇這個儲存過程名,然後點參數那個屬性,所有參數都已自動建立,運行時不要Clear,也不要再建立,直接給輸入參數賦值就可。
      

  5.   


    转一下弯撒,,,存储过程是返回数据集的,直接用查询,换ADOQuqey
      

  6.   

    你用 ADOQuery 吧
    with ADOQuery do
    begin
      close;
      SQL.Clear;
      SQL.add('exec xueji_selecteXueSheng '''+Trim(edt_XueHao.Text)+')
      Open;
    end;这样就OK 了。
      

  7.   

    你用 ADOQuery 吧
    with ADOQuery do
    begin
      close;
      SQL.Clear;
      SQL.add('exec xueji_selecteXueSheng '''+Trim(edt_XueHao.Text)+'''')
      Open;
    end;这样就OK 了。