各位老师好; 关于利用sql server2000 的存储过程进行带参数查询的问题,我有一个表,有字段:编号,姓名 ;怎样在sql server2000 写一个带参数的存储过程,
在delphi 界面中查询到"某人"的数据,书上写的都静态的存储过程.在sql server 2000 上存储过程怎么写,在delphi 窗口上又怎么写? 烦老师们赐教.不胜感谢.

解决方案 »

  1.   

    用ADOStoredProc1ADOStoredProc1.ProcedureName := '过程名';
    ADOStoredProc1.ExecProc;
    用DataSource去连接ADOStoredProc1ADOStoredProc1.Parameters.CreateParameter,先创建过程中存在的参数ADOStoredProc1.Parameters.ParamByName(),取得参数值
      

  2.   

    create proc [dbo].[sp_ExecSql](@sql varchar(4000))
    asdeclare @execSql varchar(4000)
    set @execSql = 'select * from tableName where 1=2 '
    set @execSql = @execSql+@sqlexec(@execSql)go
    with ADOStoredProc do
    begin
      ProcedureName:= 'sp_ExecSql';
      Parameters.Clear;
      Close;
      Parameters.CreateParameter('@sql',ftWideString,pdInput,4000,'and name=fdsa and xx=fdsa');
      Prepared;
      Open;
    end;
    ADODataSet.Recordset:= ADOStoredProc.Recordset;
      

  3.   


    Create Procedure dbo.GetValue (@ID  int,@name Varchar(8))
    as begin
      select * from table where id = @id and name = @Name ;
    end
    adoquery1.close;
    adoquery1.sql.text := 'Execute GetValue '+ 編號+','+Quotedstr(姓名);
    adoquery1.open;
      

  4.   


      老师; 我在sql 的代码是:
    CREATE PROCEDURE   dbo.GetValue (@ID  char  , @name Varchar(10))   
    AS
     begin
      select * from   sb   where   编号 = @id and 姓名 = @Name ;
    end
    GO
     
    我在delphi 窗口上放一个 Adoquery1 连到odbc 数据源,并设定参数 @id 与 @name 并写代码 
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       adoquery1.close;
       adoquery1.sql.text := 'Execute GetValue '+ edit1.Text+','+Quotedstr(edit2.Text);
       adoquery1.open;
    end;  edit1.text 输入编号,edit2.text 输入人名
    结果没有记录出来,
    不知道那里没写好.
      
      

  5.   

    CREATE PROCEDURE  dbo.GetValue (@ID  char /*这个参数不要使用char*/  , @name Varchar(10))  
      

  6.   

    众多老师; 用 starluck 老师的方法是一种方法,2楼老师的
    ADOStoredProc1.Parameters.ParamByName(),取得参数值如何赋值呢
      
    procedure TForm2.Button1Click(Sender: TObject);
    begin
       AdostoredProc1.ExecProc;
      ADOStoredProc1.Parameters.ParamByName('编号')
       ADOStoredProc1.Parameters.ParamByName('姓名')
       ADOStoredProc1.Open;
    end;不会取得参数值,不会写了.
      

  7.   

    create proc Prc_userinfo
    @username varchar(20),
    @userpassword varchar(20)
    as
    declare @sql nvarchar(1000)
    set @sql='insert into userinfo(username,userpassword) values'+@username,userpassword
    exec execute_sql @sqlSqlConnection con=new SqlConnection("连接字符串");
    sqlCommand cmd=new sqlcommand();
    con.open();
    cmd.connection=con;
    cmd.commandtext="存储过程的名字";
    cmd.commandType=commandtype.stroedprocedure;
    cmd.Parameters.Add("@username", SqlDbType.VarChar, 20);
    cmd.Parameters.Add("@userpassword", SqlDbType.VarChar, 20);
    sqldataadapter adapter=new sqldataadapter(cmd);
    dataset ds=new dataset();
    adapter.fill(ds);