VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1113|回复: 10

select读取带有参数的存储过程返回集,求读取语句

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-22 09:00:01 | 显示全部楼层 |阅读模式
写了一个存储过程如下:
CREATE PROCEDURE dbo.getPauseDays
    @htongInfoIdx  int
AS
        declare @p1 binary(16)
        declare @p2 binary(16)
        create table #(c1 text)
        insert  # select ""
        SELECT   @p1   =   textptr(c1)   FROM   #
        --声明一个游标
        DECLARE   tb   CURSOR   LOCAL     
          FOR   
          SELECT textptr( pausedays)
          FROM   hetongpauseinfo where uidx = @htongInfoIdx
        OPEN   tb
         FETCH   tb   INTO   @p2   
          WHILE   @@fetch_status=0   
          BEGIN   
                  UPDATETEXT   #.c1   @p1   NULL   null    hetongpauseinfo.pausedays   @p2   
          FETCH   tb   INTO   @p2   
          END   
          CLOSE   tb   
          DEALLOCATE   tb
        select c1 from #
        drop table #
GO

在查询分析器中 exec getPauseDays 12 可以的到查询的集,但是放在select 语句中怎么也不行了..select a.* from (getPauseDays 12) as a 形如这样的读取是不行的吗
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-2-1 08:00:01 | 显示全部楼层
--一個簡單的示例
use pubs
go

create proc pc
as
select title_id from titles

create table T(col varchar(50))
insert T exec pc

select * from T
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-1 11:18:01 | 显示全部楼层
存储过程中包含了select...
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-2-1 13:09:02 | 显示全部楼层
神啊,原谅我愚昧,不懂楼上朋友的意思...我在查询分析器中运行这个proc是可以,但是在前台,用select 调用这个proc的纪录集,不会写语句,忘赐教
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-2-1 13:27:01 | 显示全部楼层
在前台直接執行  exec getPauseDays 12
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-2-1 18:09:01 | 显示全部楼层
直接执行?怎么写>? .... and (exec getPauseDays 12) like '%20005-01-01%'... 这个是查询语句的一部分..我想让它返回的纪录集进行like判断,不能运行 ?查了很多资料,不明就理.. >_<
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-2 02:54:01 | 显示全部楼层
只能这样
insert into #t
exec getPauseDays 12

select * from #t
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-2 07:36:01 | 显示全部楼层
insert into #t
exec getPauseDays 12

这是把exec getPauseDays 12产生的结果集插入#t中
回复

使用道具 举报

0

主题

66

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-2-2 09:09:01 | 显示全部楼层
前台的连接对象里肯定有执行存储过程的方法
实在不行,写个table类型返回值的函数
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-2 13:00:02 | 显示全部楼层
select * from openrowset('sqloledb','trusted_connection=yes','SET FMTONLY OFF;SET NOCOUNT ON ;EXEC 你的数据库名..getPauseDays 12')

不过这样比较变态,你最好写个返回表类型函数,不用存储过程了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表