本文共 1071 字,大约阅读时间需要 3 分钟。
今天在处理一个问题时,使用到一个存储过程,是用于更新并获取最新ID的。在使用过程中,需要获取到这个ID并赋值给变量,结果用EXEC @ID = 存储过程的方式获取失败了。具体情况如下:
为了还原整个情况,先要做一些准备工作,首先,建立一个表,只有一个字段就是ID,并且插入一条数据 CREATE TABLE TABLE1 ( ID INT ) GO INSERT INTO TABLE1VALUES(1)
然后建立一个存储过程 CREATE PROCEDURE P_GETID AS BEGIN UPDATE TABLE1 SET ID = ID+1 SELECT ID FROM TABLE1END
其实说实话,这个存储过程真的没明白为啥非要这样写,用输出函数或者return变量都好呀,可是没办法,还就得用这个存储过程。当然,也可以直接把这两句弄出来直接用, 不过,谁让咱非要钻这个牛角尖来着。接着来吧。开始使用EXEC @变量 = 存储过程 这种语句发现,没有成功。
郁闷啊,惆怅啊,纠结呀。这是啥情况呢?后来想明白了,这是返回的结果集,赋值给变量貌似真的会有问题的呢。
那这个存储过程返回的值怎么获取呢? 查了N多资料,看了好多有的没的,突然想起来用个表变量中转一下不就得了?于是,开始尝试
首先声明一个表类型的变量,表结构和返回的结果集一样,
然后将存储过程返回的结果集插入到表变量中, 最后,从表变量查询字段赋值给变量。这样就可以了。首先,我要说,这个存储过程的确够坑的,大家如果只是返回一个值,千万别用这种方式。
不过,能解决问题还是蛮开心的,真心涨知识了。知行办公,专业移动办公平台 https://zx.naton.cn/ 【总监】十二春秋之,3483099@qq.com; 【Master】zelo,616701261@qq.com; 【运营】运维艄公,897221533@qq.com; 【产品设计】流浪猫,364994559@qq.com; 【体验设计】兜兜,2435632247@qq.com; 【】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com; 【】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com; 【java】首席工程师MR_W,feixue300@qq.com; 【测试】土镜问道,847071279@qq.com; 【数据】fox009521,42151960@qq.com; 【安全】保密,你懂的。
转载地址:https://blog.csdn.net/fox009521/article/details/78129246 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!