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语句,如果要返回数据集结果就不能用存储过程,存储过程的最大用处是对整个数据表中的数据进行调整.