CNode

【已解决】node mysql数据库模块调用存储过程问题

问答
SSKandAV发布于7 年前最后回复7 年前13 回复6688 浏览0 收藏

小弟之前的连的数据库是sqlserver,所以连接模块用的mssql。这个连接模块对应存储过程的调用有很多资料。所以没啥问题。现在的需要是换成mysql,那我想,mysql应该更容易,因为npm上明显mysql的下载量比mssql多得多。然而一般的sql语句都没问题。但是到调用存储过程的时候就发现问题了。我找了一下发现都没有怎么写这方面的,包括输入参数和参数类型和输出参数。瞬间傻了。npm上的只有几句话,例子都没有。

这个就看不太出来输入参数和输出参数怎么定义。 然后我百度找了一下。也没找到啥。所以想问问老哥们。去哪找个demo之类。想知道一下调用过程是怎么样的,还有参数的定义,存储过程是已经写好了的。就是调用的事。

查看回复

回复 (13)

I
im-here#1·7 年前

如果用这个包的话,这样写

 conn.query(sql, args, (error, result) => {})
 args 是个数组

存储过程一样

S
SKandAV#2·7 年前
引用 im-here如果用这个包的话,这样写 ` 存储过程一样

@im-here 老哥,我在稍微问细一点啊,args这个数组是不是包括输入参数和输出参数呢,比如我要调用的存储过程名字是AAABBB,他需要3个输入参数,一个int型的 1,然后一个是字符串类型的 ’abc‘,还有一个是时间,然后输出的内容是int型的。我之所以怎么问是因为我用mssql的时候是需要怎么构造输入参数和输出参数的。还是说mysql模块里面不用呢 22222.png

I
im-here#3·7 年前
Z
zurmokeeper#4·7 年前

await conn.query(sql, args) 第一个参数的sql , 应该可以拼成 'call generate_xxxxNo("' + prev + '");'括号里面传几个参数,你来定。

S
SKandAV#7·7 年前
引用 zurmokeeper@SKandAV OK

@zurmokeeper 老哥,问个事。就是我调用之后现在没有吧输出参数输出出来。是这样的 147.png 258.jpg

Z
zurmokeeper#8·7 年前
引用 SKandAV@zurmokeeper 老哥,问个事。就是我调用之后现在没有吧输出参数输出出来。是这样的

@SKandAV 有什么问题吗?你的node版本是很低吗?怎么还不用await或者promise化,还用回调函数的形式呢?

N
nwljy#9·7 年前

不熟就得问 你很牛逼@zurmokeeper 回调除了地狱 有啥不好 执行效率? 异步?

N
nwljy#10·7 年前
引用 SKandAV@zurmokeeper 老哥,问个事。就是我调用之后现在没有吧输出参数输出出来。是这样的

@SKandAV var resultSet_=(JSON.stringify(results));//'[{"count":"1","type":"RangeError"},{"count":"3","type":"ReferenceError"}]' resultSet = JSON.parse(resultSet_);//把results字符串转为json对象 如果返回值没有格式化, 记得格式化一下返回值

J
junfan#11·7 年前

最好不要用存储过程.. 互联网公司基本上没有用存储过程的..

Z
zurmokeeper#12·7 年前
引用 nwljy不熟就得问 你很牛逼@zurmokeeper 回调除了地狱 有啥不好 执行效率? 异步?

@nwljy 我就是问一下为什么不用而已,你又何必呢

S
SKandAV#13·7 年前
引用 nwljy@SKandAV var resultSet =(JSON.stringify(results));//'[{"count":"1","type":"RangeError"},{"count"...

@nwljy 已经解决了,谢谢。存储过程是遗留问题了。一直在用。我也没法改。刚刚接手的项目

参与回复
登录后即可参与回复。登录