在delphi中取儲存過程的返回值
close;
sql.clear;
sql.text:='declare @returncount int exec pr_selstockhead '''+stockno+''',@returncount output select @returncount';
open;
countno:=fields[0].value;
cxtxtdtnamecshyh.text:=inttostr(countno);
在sql語句裡面 如果有返回值的話,可以是用return 返回,,其他的都是引數返回,如果取引數的話 從 parameters[1].value 開始,如果取return 的返回值 要用parameters[0].value
呼叫儲存過程的方法,用adodataset控制項
function tfrmpower_cut.hasnewpowercutinfo: boolean;
begin
result := false;
with sppower_cut do //sppower_cut為tadostoredproc控制項
begin
close;
procedurename := 'p_has_powercut_info';
with parameters do
begin
clear;
refresh;
parambyname('@biggestid').direction := pdinputoutput;
parambyname('@biggestid').value := fpower_cut_id_refresh;
parambyname('@noprocess').direction := pdinputoutput;
parambyname('@noprocess').value := fnoprocess;
parambyname('@ispasstimeandnoproc').direction := pdinputoutput;
parambyname('@ispasstimeandnoproc').value := fispasstimeandnoproc;
parambyname('@isnearesttime').direction := pdinputoutput;
parambyname('@isnearesttime').value := fisnearesttime;
parambyname('@isdelete').direction := pdinputoutput;
parambyname('@isdelete').value := fisnearesttime;
parambyname('@hour').value := 3;
end;
prepared;
tryexecproc;
if parameters[0].value <> fpower_cut_id_refresh then
begin
fpower_cut_id_refresh := parameters[1].value;
result := true;
end;
if parameters[2].value <> fnoprocess then
begin
fnoprocess := parameters[2].value;
result := true;
end;
if parameters[3].value <> fispasstimeandnoproc then
begin
fispasstimeandnoproc := parameters[3].value;
result := true;
end;
if parameters[4].value <> fisnearesttime then
begin
fisnearesttime := parameters[4].value;
result := true;
end;
if parameters[5].value <> fisdelete then
begin
fisdelete := parameters[5].value;
result := true;
end;
except
on e: exception do
showmessage(e.message);
end;
end;
end;
儲存過程
/*功能: 判斷資料庫內是否有新的呼叫中心停電資訊
引數: @biggestid 客戶端最大的記錄id,如果小於當前表中的id,則返回最大的id,客戶端據此判斷是否重新整理
返回值: 無
*/alter procedure p_has_powercut_info @biggestid bigint=0 output, @noprocess int=0 output,
@ispasstimeandnoproc int=0 output, @isnearesttime int=0 output, @isdelete int=0 output, @hour int=3 as
begin
declare @tmp_id bigint,@tmp_noprocess int
select @tmp_id=power_cut_id from power_cut
if (@@error=0) and (@@rowcount>0)
if @tmp_id>@biggestid
set @biggestid=@tmp_id
select @tmp_noprocess=count(*) from power_cut where pc_proctype=0
if (@@error=0) and (@@rowcount>0)
set @noprocess=@tmp_noprocess
--超過傳送時間未處理
select @ispasstimeandnoproc=count(case when (getdate()>pc_starttime and pc_proctype=0) then 1 end) from power_cut
--距離傳送時間還有3小時未處理
select @isnearesttime=count(case when (datediff(minute, getdate(), pc_starttime)>=0 and datediff(minute, getdate(), pc_starttime)<@hour*60
and pc_proctype=0) then 1 end) from power_cut
select @isdelete=count(*) from power_cut where pc_state=2
return @biggestid
endreturn 返回的是正確或錯誤的標誌,比如 100: 成功 0: 失敗(未知原因) 1: 引數錯誤 2: .... 然後引數裡面返回具體需要的資料
取儲存過程的資訊
select case when a.colorder 1 then d.name else end n tabname case when a.colorder 1 then d.id else end n tabid a.colorder n keyno a.name n colname b.n...
取儲存過程的引數列表
取儲存過程的引數列表 1.方法一 alter procedure dbo proc getprocedureparams procname as varchar 255 儲存過程名稱或函式名稱 as 用途 取儲存過程或函式的引數列表,如果是函式且返回表,則返回表的字段資訊 declare procn...
獲取儲存過程的ReturnValue值
input 此引數只用於將資訊從應用程式傳輸到儲存過程。inputoutput 此引數可將資訊從應用程式傳輸到儲存過程,並將資訊從儲存過程傳輸回應用程式。output 此引數只用於將資訊從儲存過程傳輸回應用程式。returnvalue 此引數表示儲存過程的返回值。sql server 的儲存過程引數...