当前位置:首页 > 开发 > 数据库 > 正文

SQL函数返回临时表结构的数据用于查询

发表于: 2015-04-26   作者:357029540   来源:转载   浏览:
摘要: 这两天在做一个查询的SQL,这个SQL的一个条件是通过游标实现另外两张表查询出一个多条数据,这些数据都是INT类型,然后用IN条件进行查询,并且查询这两张表需要通过外部传入参数才能查询出所需数据,于是想到了用SQL函数返回值,并且也这样做了,由于是返回多条数据,所以把查询出来的INT类型值都拼接为了字符串,这时就遇到问题了,在查询SQL中因为条件是INT值,SQL函数的CAST和CONVERST都
这两天在做一个查询的SQL,这个SQL的一个条件是通过游标实现另外两张表查询出一个多条数据,这些数据都是INT类型,然后用IN条件进行查询,并且查询这两张表需要通过外部传入参数才能查询出所需数据,于是想到了用SQL函数返回值,并且也这样做了,由于是返回多条数据,所以把查询出来的INT类型值都拼接为了字符串,这时就遇到问题了,在查询SQL中因为条件是INT值,SQL函数的CAST和CONVERST都是不能把形如‘1,2,3’的字符串转换为INT的,目前没有想到怎么把形如‘1,2,3’的值用于INT类型 IN ()的方法,所以也在网上找了好多资料,后来就找到了用SQL函数返回表结构的数据来满足INT值的条件。

    具体实现的SQL如下所示:



    CREATE FUNCTION [dbo].[PURCHASE_GROUP]
(
@PURCHASE_MANAGER_ID INT--传入参数
)
RETURNS @T_GROUP TABLE(GROUP_ID INT)--返回临时表结构
AS
BEGIN

--定义第一个游标用于查询值
DECLARE PURCHASE_CHARGE_GROUP_CURSOR CURSOR FOR
SELECT
  REQUEST_GROUP_DESC
    FROM
  PURCHASE_CHARGE_GROUP
WHERE
  PURCHASE_MANAGER_ID = @PURCHASE_MANAGER_ID;
DECLARE
  @GROUP_ID_STR VARCHAR(8000),
  @GROUP_DESC VARCHAR(200),
  @GROUP_ID INT;

--赋初始值
SET @GROUP_ID_STR = '';
SET @GROUP_DESC = '';
SET @GROUP_ID = '';
--打开游标
OPEN PURCHASE_CHARGE_GROUP_CURSOR;

--第一次取值到变量
FETCH NEXT FROM PURCHASE_CHARGE_GROUP_CURSOR INTO @GROUP_DESC;

--循环第一个游标
    WHILE @@FETCH_STATUS = 0
    BEGIN

--定义第二个游标,因为要用到第一个游标返回的变量,所以定义在这里
  DECLARE FND_GROUP_CURSOR CURSOR FOR
  SELECT
   GROUP_ID
  FROM
   FND_GROUP
  WHERE
   GROUP_DESC LIKE;

--打开第二个游标
  OPEN FND_GROUP_CURSOR;
  SET @GROUP_ID = -1;

--第一次取第二个游标的值
     FETCH NEXT FROM FND_GROUP_CURSOR INTO @GROUP_ID;

--循环第二个游标
     WHILE @@FETCH_STATUS = 0
     BEGIN

--插入临时表值
   INSERT INTO @T_GROUP(GROUP_ID) VALUES (@GROUP_ID)

--下次循环第二个游标的值
   FETCH NEXT FROM FND_GROUP_CURSOR INTO @GROUP_ID;
     END;

--关闭第二个游标
  CLOSE FND_GROUP_CURSOR;

--销毁第二个游标
  DEALLOCATE FND_GROUP_CURSOR;

--下次循环第一个游标的值
  FETCH NEXT FROM PURCHASE_CHARGE_GROUP_CURSOR INTO @GROUP_DESC;
    END;

--关闭第一个游标
CLOSE PURCHASE_CHARGE_GROUP_CURSOR;

--销毁第一个游标
DEALLOCATE PURCHASE_CHARGE_GROUP_CURSOR;
RETURN ;
END;



查询临时表的数据

SELECT  GROUP_ID FROM [dbo].[PURCHASE_GROUP](#purchaseManagerId#)

SQL函数返回临时表结构的数据用于查询

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
查询表结构 SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM
第一次发文章到首页,如果内容不好,请多见谅 由于项目需要,要在一个存储过程里建临时表和临时函数
有数据表 ts_invite_record ,内容如下: select count(*) as count from ( (SELECT distinct uid F
TOOLS-> Export /Tables 只导出表结构,如附图1,把其中几项全去掉。 如果需要导出表数据,则勾选
TOOLS-> Export /Tables 只导出表结构,如附图1,把其中几项全去掉。 如果需要导出表数据,则勾选
TOOLS-> Export /Tables 只导出表结构,如附图1,把其中几项全去掉。 如果需要导出表数据,则勾选
环境:SQL Server 2008 R2 问题:查询表结构命令 对MySQL和Oracle数据库熟悉的朋友知道用desc就可以
导出表结构: Tools-->Export User Objects(导出用户对象) -->选择要导出的表(包括Sequence
导出表结构: Tools(工具)-->Export User Objects(导出用户对象) -->选择要导出的表(包括Seq
在表的所有者不能改变的情况下,可以使用导入导出表结构和表数据的方法,将表移动到你想要的所有者
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号