调用存储过程

调用存储过程

1)创建一个sqlserver存储过程

1
2
3
4
5
6
7
8
alter PROCEDURE gettables @sum INT OUTPUT
AS
BEGIN
  SET @sum = 1 + 2
  select top 2 * from tunit
  select top 2 * from tgoods
END
GO

  

  2)中间件调用存储过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
unit api.storedproc;
//cxg 2024-5-26
{$mode delphi}
 
interface
 
uses DB.storedproc, sys.global,
  fpjson, jsonparser, uni,
  SysUtils, Classes, DB;
 
type
 
  { Tstoredproc }
 
  Tstoredproc = class(Trpc)
    procedure Open(ctxt: Tcontext);  //多个结果集
    procedure open2(ctxt: Tcontext); //单个结果集
  end;
 
implementation
 
{ Tstoredproc }
 
procedure openInParam(sp: TUniStoredProc; param: tjsonobject);
begin
//
end;
 
procedure openOutParam(sp: TUniStoredProc; param: tjsonobject);
begin
  if sp.FindParam('sum') <> nil then
    param.Add('sum', sp.ParamByName('sum').AsInteger);
end;
 
procedure Tstoredproc.Open(ctxt: Tcontext);
var
  sp: Tsp;
begin
  sp.dbid := '1';
  sp.ctxt := ctxt;
  sp.procName := 'gettables';
  sp.onInParam := openInParam;
  sp.onOutParam := openOutParam;
  sp.Open;
end;
 
procedure open2param(sp: TUniStoredProc; param: tjsonobject);
begin
  sp.ParamByName('goodsid').AsWideString := param.Get('goodsid');
end;
 
procedure open2outParam(sp: TUniStoredProc; param: tjsonobject);
begin
  //
end;
 
procedure Tstoredproc.open2(ctxt: Tcontext);
var
  sp: Tsp;
begin
  sp.dbid := '1';
  sp.ctxt := ctxt;
  sp.procName := 'sp_9';
  sp.onInParam := open2param;
  sp.onOutParam:=open2outParam;
  sp.Open2;
end;
 
initialization
  RegisterClass(Tstoredproc);    //注册类
 
end.

  3)客户端调用存储过程

3.1)返回多个结果集并返回output参数值

 

3.2)返回单个结果集带input参数

 

posted @   delphi中间件  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示