delphi和sqlserver交互

 

  {利用adoquery调用sql server存储过程}
procedure TForm1.Label1Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('exec proc_stu :a output,:b,:c');
  adoquery1.Parameters[1].Value :=strtoint(edit1.Text);
  adoquery1.Parameters[2].Value :=strtoint(edit2.Text);
  adoquery1.Parameters[0].DataType:=ftsmallint;
  adoquery1.Parameters[0].Direction:=pdoutput;
  adoquery1.Prepared:=true;
  adoquery1.Open ;
  edit3.Text:= inttostr(adoquery1.Parameters[0].Value );
end;
    {利用adostoreproc调用sql server标量函数}
procedure TForm1.Label2Click(Sender: TObject);
begin

     adostoredproc1.ProcedureName :='rectanglearea';
     adostoredproc1.close;
     adostoredproc1.Parameters.Refresh;//Clear会导致数组溢出异常。
     adostoredproc1.Parameters.CreateParameter('return_value',ftfloat,pdreturnvalue,20,null);//函数返回值
     adostoredproc1.Parameters.CreateParameter('a',ftfloat,pdinput,10,null);
     adostoredproc1.Parameters.CreateParameter('b',ftfloat,pdinput,10,null);
     adostoredproc1.Parameters[1].Value :=strtofloat(edit1.Text);
     adostoredproc1.Parameters[2].Value :=strtofloat(edit2.Text);
     adostoredproc1.Prepared :=true;
     adostoredproc1.ExecProc ;
     edit3.Text:= floattostr(adostoredproc1.Parameters[0].Value );

end;

{利用adostoreproc调用sql server存储过程}
procedure TForm1.Button1Click(Sender: TObject);
begin
     adostoredproc1.ProcedureName :='proc_stu';
     adostoredproc1.close;
     adostoredproc1.Parameters.Clear ;
     //adostoredproc1.Parameters.CreateParameter('return_value',ftfloat,pdreturnvalue,20,null);
     adostoredproc1.Parameters.CreateParameter('a',ftinteger,pdoutput,10,null);//参数名不需要与sql中定义的参数名相同
     adostoredproc1.Parameters.CreateParameter('b',ftinteger,pdinput,10,null);
     adostoredproc1.Parameters.CreateParameter('c',ftinteger,pdinput,10,null);
     adostoredproc1.Parameters[1].Value :=strtofloat(edit1.Text);
     adostoredproc1.Parameters[2].Value :=strtofloat(edit2.Text);
     adostoredproc1.Prepared :=true;
     adostoredproc1.Open  ;//有与dbgrid相关联,应用open而不是execproc.
     edit3.Text:= floattostr(adostoredproc1.Parameters[0].Value );


end;

  {利用adoquery调用sql server表值函数}
procedure TForm1.Button2Click(Sender: TObject);
begin
     adoquery1.Close;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('select * from dbo.tt(:a)');
  adoquery1.Parameters[0].Value :=edit1.Text ;
  adoquery1.Prepared:=true;
  adoquery1.Open ;
  //edit3.Text:= inttostr(adoquery1.Parameters[0].Value );
end;