lua调用mysql存储过程_skynet 创建存储过程脚本

最近主程更改了数据库的操作方案,由之前的拼写sql脚本转为在mysql端创建好存储过程后,直接调用存储过程。

首先对一个表测试上述过程:

数据库端存储过程:(测试表)

CREATE TABLE `randomval` (

`id` int(10) unsigned NOT NULL,

`val` int(10) unsigned NOT NULL,

`step` int(10) unsigned NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

创建存储过程:

DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `qy_insert_randomval`(IN in_id int, IN in_val int, IN in_step int)

BEGIN

insert into randomval (`id`, `val`, `step`) values (in_id, in_val, in_step)

on duplicate key update `id` = in_id, `val` = in_val, `step` = in_step;

END $$

DELIMITER;

skynet的连接:更改的test下的testmysql.lua

skynet.start(function()

local function on_connect(db)

db:query("set charset utf8");

end

local db=mysql.connect({

host="127.0.0.1"或"局域网ip",

port=3306,

database="XXXX",

user="XXXX",

password="XXXX",

max_packet_size = 1024 * 1024,

on_connect = on_connect

})

if not db then

print("failed to connect")

end

--拼接调用存储过程的sql语句

print("testmysql success to connect to mysql server")

--表t的格式忽略,和项目有关,可自定义

local t = {__fields = {id = 34, val = 30, step = 50}, __tname = "randomval", __head_ord = {"id", "val", "step"} }

local tmp_sql = {}

local sql_first_part = string.format("call " .. "qy_insert_" .. t.__tname .. "(" )

table.insert(tmp_sql, sql_fir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值