SQL部分:
表:
CREATE TABLE [T_Language] (
[fsCodify] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[fsName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO
存储过程:
CREATE procedure Select_Language2    
@ID varchar(300),    ------输入编号
@Language varchar(300),------输入名称
@rows int     output  ----输出找到的行数asdeclare @sql varchar(300)set @sql='  select * from T_Language where 1=1'
if  @ID!='' 
     set @sql=@sql + ' and fscodify=' + ''''+ @id+''''
 
if @Language!='' 
     set @sql=@sql + ' and fsname='  + ''''+ @Language+   ''''exec  ( @Sql)
SELECT @rows = @@rowcount-----返回值
if @rows=0 
  return 0  -----找不记录
else
  return 1-----找到记录
GO使用AdoQuerey控件测试OK
procedure TForm1.Button1Click(Sender: TObject);
begin
   with adoquery1 do
  begin
    close;
    SQL.Clear;
    sql.Add('execute select_Language2 ''1'',''英语'','''' ');//再问一下用Edit1.text 怎么代替代这个1,Edit2.text 怎么代替代这个英语的写法.
    open;
  end;
end;end.
但好像要用ADOStoredProc才可取得输出参数和返回值
ADOStoredProc控件不太会用,请大家指教一下

解决方案 »

  1.   

    已解决了字符串变量问题
     sql.Add('execute select_Language2 '''+ edit1.Text + ''',''' + edit2.text+ ''','''' ');顶一下
      

  2.   

    不需要用ADOStoredProc,直接用ADODataset +  Execute 存储过程名字 参数  就可以
    DataSet在得到返回数据后,就跟直接查询 FieldByName没有什么两样
      

  3.   

    TO:楼上的
    你是说用ADODataset控件吗?
    能否说具体点
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with AdoDataSet1 do  //
      begin
        ParamCheck := False;
        CommandType :=  cmdStoredProc;
        CommandText := 'Select_Language2' ;
        ParamCheck := True;    Parameters.ParamByName('@ID').Value :='1';
        Parameters.ParamByName('@Language').Value :='1';
        Parameters.ParamByName('@rows').Value :='1';
        Open;
        ShowMessage(Parameters.ParamByName('@RETURN_VALUE').Value);
      end;
    end;
      

  5.   

    to:siaocuo_zrf(小错):
    按照你的程序执行提示:project project1.exe rasied class EDatabaseError With Msessage "ADODataset1":Parameter '@id' not found
      

  6.   

    你的ParamCheck := True 是不是没有打开。 我在我机器调试过你的存储过程, 是没有问题的
    你在设计期内把AdoDataSet的CommandType设置为cmdStoredProc
    然后选择 CommandText  为你的 Select_Language2
      ParamCheck 设置为True然后 点击 Parameters属性,看看每一个参数名字和Value是否和你存储过程内的一致。包括类型。可以为参数赋上默认的Value 
    Active  ADODataSet看看会不会出错。
    你这个错误应该是参数设置错误,包括名字,类型,值,你仔细检查一下。