zoukankan      html  css  js  c++  java
  • SQL SERVER 存储过程中SELECT 返回值如何赋值给变量

    今天在处理一个问题时,使用到一个存储过程,是用于更新并获取最新ID的。在使用过程中,需要获取到这个ID并赋值给变量,结果用EXEC @ID = 存储过程的方式获取失败了。具体情况如下:

    为了还原整个情况,先要做一些准备工作,首先,建立一个表,只有一个字段就是ID,并且插入一条数据
    CREATE TABLE TABLE1
    (
    ID INT
    )
    GO
      INSERT INTO TABLE1
    VALUES(1)

    然后建立一个存储过程
    CREATE PROCEDURE P_GETID
    AS
    BEGIN
    UPDATE TABLE1 SET ID = ID+1
    SELECT ID FROM TABLE1
    END

    其实说实话,这个存储过程真的没明白为啥非要这样写,用输出函数或者return变量都好呀,可是没办法,还就得用这个存储过程。当然,也可以直接把这两句弄出来直接用,
    不过,谁让咱非要钻这个牛角尖来着。接着来吧。
    开始使用EXEC @变量 = 存储过程 这种语句发现,没有成功。

    郁闷啊,惆怅啊,纠结呀。这是啥情况呢?后来想明白了,这是返回的结果集,赋值给变量貌似真的会有问题的呢。
    那这个存储过程返回的值怎么获取呢?
    查了N多资料,看了好多有的没的,突然想起来用个表变量中转一下不就得了?

    于是,开始尝试

    首先声明一个表类型的变量,表结构和返回的结果集一样,
    然后将存储过程返回的结果集插入到表变量中,
    最后,从表变量查询字段赋值给变量。这样就可以了。

    首先,我要说,这个存储过程的确够坑的,大家如果只是返回一个值,千万别用这种方式。
    不过,能解决问题还是蛮开心的,真心涨知识了。

  • 相关阅读:
    sql: 生日三个月内有效
    asp 日期操作
    Csharp:操作存儲過程輸出參數,和返回值
    sql: 生日赠品中的相关算法
    asp and javascript: sql server export data to csv and to xls
    Csharp:user WebControl Read Adobe PDF Files In Your Web Browser
    Csharp: Send Email
    数据结构(七)排序---冒泡排序
    数据结构(七)排序---基本概念和分类
    数据结构(六)查找---散列表(哈希表)查找
  • 原文地址:https://www.cnblogs.com/jijm123/p/9824768.html
Copyright © 2011-2022 走看看