如何调用数据库中存在的存储过程?(200分)

  • 主题发起人 主题发起人 qqxia
  • 开始时间 开始时间
Q

qqxia

Unregistered / Unconfirmed
GUEST, unregistred user!
如何调用数据库中存在的存储过程?给我发个简单的例子
我的信箱:qqxia7885@sina.com
触发器的运行是否有什么条件限制?
存储过程和触发器与自己在程序中实现的处理过程各有什么优缺点?
 
在delphi中有现成的存储过程控件,可以直接使用
 
with CaDataMod.cmdAddSendMsg do
begin
Parameters[1].Value :=SM_CUSTOMERID;
Parameters[2].Value :=SM_PASSWORD;
Parameters[3].Value :=PhoneNo;
Parameters[4].Value :=msg;
Execute;
end;

cmdaddsendmsg 是数据模块上面的一个adocommand控件。在选定connection属性后
在command type里选定要访问的存储过程不就行了
 
使用 Delphi BDE 的 TStoredProc 或者 ADO 的 TADOStoredProc,注意参数调用形式
如果存储过程没有返回值或者比较简单,也可以直接在 Query 或者 Command 里调用。
 
同意楼上的说法,我的那个存储过程就是不需要返回什么值的。
 
使用TStoredProc或TADOStoredProc,很容易实现的。先研究一下这两个组件,很容易使用的。
 
无数据返回:
try
with StrdPrcEditUser do begin
Active := False ;
Parameters.ParamByName('@UserID').Value := UserID;
Parameters.ParamByName('@Usercode').Value := Usercode;
Parameters.ParamByName('@UserName').Value := UserName;
Parameters.ParamByName('@Note').Value := UserNote;
ExecProc;
Return := Parameters.ParamByName('@Return_value').Value ;
end;
except
end;
有数据返回:

try
with StrdPrcEditUser do begin
Active := False ;
Parameters.ParamByName('@UserID').Value := UserID;
Parameters.ParamByName('@Usercode').Value := Usercode;
Parameters.ParamByName('@UserName').Value := UserName;
Parameters.ParamByName('@Note').Value := UserNote;
Active := True;
Return := Parameters.ParamByName('@Return_value').Value ;
end;
except
end;
 
我想这样也可以
ADOQuery1.SQL.Add('exec StoredProc_Name ');

 
用李维老是ADO书的一个例子:
存储过程
Create procedure raisesalary @percentage int,@RecCount int output
as
begin
Update ADOTestDatas set Salary=Salary+Salary*(@percentage/100)
set @RecCount=@@RowCount
end

在Delphi 中调用
放入TADOConnection、TADODataSet等、设置好,然后放入TADOStroedProc组件
设置TADOConnection为刚才放的,然后选择ProcedureName属性。
调用过程:
with ADOStroedProc1 do
begin
Parameters.ParamByName('@percentage').value:=1;
Parameters.ParamByName('@RecCount').Value:=0;
ExecProc;
end;
 
后退
顶部