luasql扩展

这些天在用luasql, 发现如果要使用存储过程只能是 conn::execute("exec sp_name")变通来用,不支

持带参数的存储过程。我把它改造了一下, 让它基本可以执行带输入、输出参数和返回值的存储过程,并

加了一个是否启用连接池的功能。
像这样的存储过程:

create procedure sp_odbc_test
 @input varchar(100),
 @output int output
as
set @output = datalength(@input)
return @output

我的luasql.odbc库可以这样来调用了:

-- true表示启用连接池
env = assert(luasql.odbc(true), "建立失败");
conn = assert(env:connect("dsn", "username", "password"), "登录失败!")
-- prepare的参数为语句字符串和参数个数
st = conn:prepare("{ ? = call sp_odbc_test(?, ?) }", 3)
st:registerout(1, sqltypes.int)
st:setstring(2, "hello world!")
st:registerout(3, sqltypes.int)
st:execute()

local value = st:getint(1)
print(value)

st:close()
conn:close()
env:close()
最后三句可以不写,因为定义了垃圾回收。由于刚接触odbc,尚不是很清楚它的sql type和c type的匹配,

所以功能还不是很完善。如果你熟悉odbc的话,请与回复你的联系方式,我准备最终将其开源出去.
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值