Delphi(程序人生)

Delphi Programer DoubleCat

导航

SQL-Server2000的存储过程

SQL-Server2000的存储过程


 

 

SQL-Server2000是有函数的,不过仅限于自定义函数和系统函数,要让Delphi使用SQL-Server2000中的方法必须写成存储过程,存储过程,其实指的就是用自定义的方法,当然可以有返回值,也可以没有返回值.


 

函数的写法

CREATE Function aa (@a int , @b int) Returns int  As//这里是Returns 不是Return
begin
   Return @a + @b  //这里才是Return
end//不要在这里加分号

---------------------------------------------------

存储过程的写法(带输入叁数与返回值)

CREATE PROCEDURE HaHa (@a int , @b int, @c int OutPut) //叁数表用()号引起来,叁数表中默认是进叁
AS                                                                                               //如果要做输出叁数 必须在叁数后面加上 
begin                                                                                            //OutPut
 Select @c = @a + @b //存储过程的赋值是用Select方法赋值
end
GO

------------------------------------------

调用这个过程的方法

1,DBG->ADOStoredProc1设置好它的连接

2,ADOStoredProc1->ProcedureName设置他要执行的存储过程名,设好后,ADOStoredProc1->Parameters属

性中自动会把存储过程的使用到的参数读过来

Delphi中的为存储过程的入叁赋值及取出叁的值代码如下

---------------------------------------------------------------


  ADOStoredProc1.Parameters.ParamByName('@a').Value:=12;
  ADOStoredProc1.Parameters.ParamByName('@b').Value:=13;
  ADOStoredProc1.ExecProc;
  ShowMessage(IntToStr(ADOStoredProc1.Parameters.ParamByName('@c').Value));

---------------------------------------------------------------

 

下面是一个用SQL-Server2000的存储过程取得SQL-Server2000服务器的时间,这个方法,在做时间同步时很有用,如所有工作站都要同步成一个时间,无论在局哉网软件中还是C/S软件中,都有很广的用途

存储过程的写法如下

---------------------------

CREATE PROCEDURE GetServerDateTime (  @DateTime  DateTime OutPut) AS
begin
  Select @DateTime=GetDate()
end;
GO

------------------------------

调用的方法如下

-------------------------------

//---这是一个同步SqlServer服务器的时间,使用有工作站都和服务器同一日期时间
procedure TDM.SynchronizationDateTime;
var
TheServerDateTime:TDateTime;//定义服务器时间
TheLocalDateTime:_SystemTime;//定义本地系统时间
Year,Month,Day:Word;//定义年月日
Hour,Min,Sec,MSec:Word;//定义时分秒毫秒
begin
  Synchronization.ExecProc;
  TheServerDateTime:=Synchronization.Parameters.ParamByName('@DateTime').Value;
  DecodeDate(TheServerDateTime,Year,Month,Day);//分解服务器年月日
  DecodeTime(TheServerDateTime,Hour,Min,Sec,MSec);//分解服务器时间
  //-------设定本地系统时间
  TheLocalDateTime.wYear:=Year;
  TheLocalDateTime.wMonth:=Month;
  TheLocalDateTime.wDay:=Day;
  TheLocalDateTime.wHour:=Hour;
  TheLocalDateTime.wMinute:=Min;
  TheLocalDateTime.wMilliseconds:=MSec;
  SetlocalTime(TheLocalDateTime);//更改本地系统时间
end;

-------------------------------

注意:存储过程只能执行DDL语句,如果要返回数据集结果就不能用存储过程,存储过程的最大用处是对整个数据表中的数据进行调整.

posted on 2008-06-13 16:24  DoubleCat  阅读(607)  评论(0编辑  收藏  举报