DATASNAP中间件调用带OUTPUT参数的存储过程
服务端:
function TServerMethods1.spExecOut(funcId, sqlId,
inParams: OleVariant): OleVariant;
var
d: TfrmDB;
procName: string;
params: TFDParams;
i, h: Integer;
begin
Result := null;
d := DBPool.Lock;
if not Assigned(d) then
Exit;
try
try
procName := frmBuffer.GetSqlSelect(funcId, sqlId);
if procName = '' then
Exit;
d.proc.Close;
d.proc.StoredProcName := procName;
d.proc.Prepare;
params := TFDParams.Create;
try
UnpackFDParams(inParams, params);
for i:=0 to params.Count -1 do
for h:=0 to d.proc.ParamCount-1 do
if d.proc.Params[h].Name = params[i].Name then
begin
if d.proc.Params[h].ParamType=ptInput then
begin
d.proc.Params[h].Value := params[i].Value;
Break;
end;
end;
finally
params.Free;
end;
d.proc.ExecProc;
Result := PackageFDParams(d.proc.Params);
except
on e: Exception do
begin
Result := null;
Log.WriteLog('TServerMethods1.spExecOut ' + e.Message);
Exit;
end;
end;
finally
DBPool.Unlock(d);
end;
end;
客户端调用:
procedure TfrmMain.Button2Click(Sender: TObject);
var
r:OleVariant;
p:TParams;
begin
p:=TParams.Create(nil);
p.Clear;
p.CreateParam(ftInteger,'@a',ptInput).Value :=1;
p.CreateParam(ftInteger,'@b',ptInput).Value :=2;
p.CreateParam(ftInteger,'@c',ptOutput);
r := spExecOut('9999','3',PackageParams(p));
UnpackParams(r,p);
p.ParamByName('@c').Value;
p.Free;
end;
end.
DATASNAP中间件调用带OUTPUT参数的存储过程的更多相关文章
- Oracle使用jdbc调用带游标参数的存储过程
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- c#调用带输出参数的存储过程
sql server中编写一个存储过程: CREATE PROCEDURE ProGetPWD @username varchar(20), @password varchar(20) OUTPUT ...
- C# 调用带输入输出参数的存储过程
//调用存储过程执行类似于2//select count(*) from userinfo where username=username and pwd=pwd and grade=grade3// ...
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: ...
- 带OUTPUT参数的CLR存储过程
前面写了一篇<带参数的CLR存储过程>http://www.cnblogs.com/insus/p/4373605.html ,如果我们需要创建一个带OUTPUT返回值. 实现它,可以先了 ...
- 【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别
用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级.本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签<proced ...
- sqlserver 带输出参数的存储过程的创建与执行
创建 use StudentManager go if exists(select * from sysobjects where name='usp_ScoreQuery4') drop proce ...
- oracle学习 十二 使用.net程序调用带返回值的存储过程(持续更新)
数据库返回的是结果集,存储过程返回的是一个或者多个值,所以不要使用while循环去读取,也不要使用datareader函数去调用.v_class_name是返回函数 使用.net调用oracle数据库 ...
- sqlserver 带输出参数的存储过程
--创建存储过程create procedure proc_stu@sname varchar(20),@pwd varchar(50),@flag bit outputasif exists(sel ...
随机推荐
- [Swift通天遁地]四、网络和线程-(9)上传图片并实时显示上传进度
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- jeecg中列表查询数据关联其他表的显示
1.A表字段:id,name;B表字段:id,name,fid(A表外键),现查询A表和B表的所有数据并且查询条件A,B都有,在前台页面list显示 2.后台方法: @RequestMapping(p ...
- Ajax实现文件的上传
Ajax实现文件的上传 准备 ajax的参数补充 type不写的话默认是GET dataType和ContentType: dataType: 浏览器发给服务器希望返回的数据类型 .. 如果明确地指定 ...
- UNIX环境高级编程--6
系统数据文件和信息 数据文件都是ASCII文本文件,并且使用标准I/O库读这些文件,例如口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口 ...
- [转]Oracle Client 11g安裝經驗
本文转自:http://www.dotblogs.com.tw/shadow/archive/2011/11/08/54759.aspx 開發環境:本機(Win XP)的ASP.net 4 WebSi ...
- 回收maven私仓过期垃圾
login->scheduled tasks->add
- jQuery——切换toggle
toggle()-----显示隐藏 toggleClass-------添加类或者删除类 <!DOCTYPE html> <html lang="en"> ...
- Linq处理decimal字段汇总Sum()为NULL
xxxxxxxx.Sum(f => f.jifen).GetValueOrDefault(0)
- js弹开页面并调用方法
每次重新写一个功能的时候,都能发现以前写的并不太好,都可以改进,奇怪的是我还是我,为什么曾经的我就想不起来要这么写,比如下面两段代码 历史代码: if (infoTablePage != null) ...
- vi 命令学习(一)
行内移动] w word 向后移动一个单词 b back ·向前移动一个单词 行首 ^ 行首,第一个不是空白字符的位置 $ 行尾 [行数移动] gg go 文件顶部 G go 文件末尾 数字gg go ...