标题:执行存储过程了 如何显示执行结果出来的呢?
只看楼主
liaohongchu
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2008-4-25
结帖率:78.72%
已结贴  问题点数:0 回复次数:6 
执行存储过程了 如何显示执行结果出来的呢?
/*
    通用分页存储过程
    参数:
    @TableName = 数据表名
    @PrimaryKey = 主键字段.一般是标识字段
    @Fields = 要显示的字段列
    @Condition = 查询的条件.不带"WHERE"
    @OrderBy = 排序字段.不带"ORDER BY"
    @Page = 当前显示的页码
    @PageSize = 一页显示的记录数(页码大小)
    @PageCount = 返回共有多少个页(页码总数)
    @RecordCount = 返回共有多少条记录数
*/
ALTER PROCEDURE [dbo].[usp_PageDataReader_amyin]
(
    @TableName nvarchar(250),
    @PrimaryKey nvarchar(20),
    @Fields nvarchar(2000)='*',
    @Condition nvarchar(500)='',
    @OrderBy nvarchar(350)='',
    @Page int = 1 out,
    @PageSize int = 20,
    @PageCount int = 1 out,
    @RecordCount int = 1 out
)
AS
SET NOCOUNT ON
DECLARE @sql nvarchar(4000),@PrimaryKeyType bit
IF(LEN(@Condition)>1)SET @Condition = '  WHERE ' + @Condition
IF(LEN(@OrderBy)>1)SET @OrderBy = ' ORDER BY '+ @OrderBy
IF(@Fields = '')SET @Fields = '*'
IF(@PageSize < 0)SET @PageSize = 20

--确认主键的排序方式
IF CHARINDEX(@PrimaryKey+' DESC',@OrderBy) > 0
    SET @PrimaryKeyType = 0    --主键降序排序
ELSE
    SET @PrimaryKeyType = 1    --主键升序排序

--计算总计录数
SET @sql = 'SELECT @RecordCount=COUNT(*) FROM ' + @TableName + @Condition
EXEC sp_executesql @sql,N'@RecordCount int OUTPUT',@RecordCount OUTPUT

--计算总页码数
--确定总页数
IF @RecordCount%@PageSize=0
    SET @PageCount=CEILING(@RecordCount/@PageSize)
ELSE
    SET @PageCount=CEILING(@RecordCount/@PageSize)+1

--计算当前页码
IF(@PageCount<1)SET @PageCount=1
IF(@Page < 1)SET @Page = 1
IF(@Page>@PageCount)SET @Page = @PageCount

IF(@Page = 1 OR @RecordCount < @PageSize)
BEGIN
    --取第一页时直接SELECT
    SET @sql = 'SELECT TOP ' + CAST(@PageSize AS Varchar(10)) + ' ' + @Fields + ' FROM ' + @TableName + @Condition + @OrderBy   
END
ELSE
BEGIN
    DECLARE @PrimaryKeySql Varchar(300),@MinMax varchar(20),@Index int
    --处理主键中包括有[前缀]的字段
    SET @MinMax = @PrimaryKey
    SET @index = CharIndex('.',@MinMax)
    IF(@index > 0)
        SET @MinMax = SubString(@MinMax,@index + 1,LEN(@MinMax) - @index)

    IF(@PrimaryKeyType = 0)
        --主键降序排列
        SET @PrimaryKeySql=  @PrimaryKey  + '<(SELECT MIN([' + @MinMax + '])'
    ELSE
        --主键升序排列
        SET @PrimaryKeySql=  @PrimaryKey + ' >(SELECT Max([' + @MinMax + '])'
    IF(LEN(@Condition)>1)
        SET @PrimaryKeySql =  @Condition + ' AND ' + @PrimaryKeySql
    ELSE
        SET @PrimaryKeySql = ' WHERE ' + @PrimaryKeySql
    --取其它页码
--SET @sql = 'SELECT TOP ' + CAST(@PageSize AS Varchar(10)) + ' ' + @Fields + ' FROM ' + @TableName + @PrimaryKeySql + ' FROM
--(SELECT TOP ' + CAST((@Page-1)*@PageSize AS Varchar(20)) + ' ' + @Fields + ' FROM ' + @TableName + @Condition + @OrderBy + ') AS tbtmp)'  + @OrderBy
set @sql='select '+@Fields+' from (select '+@Fields+',row_number() over('+@OrderBy+') as pageid
from '+@TableName+@Condition+') as pagetable where pagetable.pageid between '+CAST((@Page-1)*@PageSize+1 AS Varchar(20)) +' and '+CAST(@Page*@PageSize AS Varchar(10))+''
Print @sql
END
--SELECT @sql
Exec(@sql)
exec usp_PageDataReader_amyin 'HomesInfo表','Id','*','','Id DESC'   执行存储过程了 如何显示执行结果出来的呢?
老是显示命令已成功完成。
搜索更多相关主题的帖子: 结果 
2010-12-09 17:31
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:10 
存储过程只有返回数据才会显示结果,不返回数据怎么显示结果?
2010-12-10 10:45
liaohongchu
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2008-4-25
得分:0 
不能在写存储过程的地方显示结果的吗
2010-12-13 16:23
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:5 
你在页面调用存储过程?不返回结果?
2010-12-13 16:49
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
得分:5 
以下是引用liaohongchu在2010-12-13 16:23:02的发言:

不能在写存储过程的地方显示结果的吗
你是说在数据库里显示信息吗?可以啊,调试存储过程,都是可以输出结果的

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-12-13 19:39
liaohongchu
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2008-4-25
得分:0 
算了 给分把 。你们都理解不对了。也可能我表达错了把
不能在写存储过程的地方显示结果的吗  就是存储过程在哪里就在哪里显示?
2010-12-15 17:33
dreamit8
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-3
得分:0 
我的总是显示 命令已完成???
why?????
我的是sqlserver2005的
2012-12-03 09:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328525-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.206823 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved