首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 使用EXECUTE执行存储过程问题...在线等. [已结贴,结贴人:Hellonet123]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hellonet123
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-08 15:32:54 楼主
    SQL code
    ALTER PROCEDURE [dbo].[PagingRecord] ( @PageIndex int,--页号,从0开始 @PageSize int,--页尺寸 @OrderField varchar(100),--排序字段及类型(多个条件用逗号分开)如:JobID DESC,Checkintime @TableName varchar(100),--表名或视图表 @StrWhere varchar(2000),--条件 @FieldList varchar(2000),--欲选择字段列表 @DoCount AS bit=1-- 0值返回记录总数, 非 0 值则返回记录 ) AS BEGIN TRAN DECLARE @SqlQuery varchar(4000) IF @DoCount<>0 Goto GetCount Else Goto GetSearch GetCount:--返回记录总数 DECLARE @SearchSql AS Nvarchar(4000) SET @SearchSql= 'SELECT Count(*) AS Total FROM '+@TableName+' WHERE '+@StrWhere exec sp_executesql @SearchSql --print @SearchSql COMMIT TRAN return GetSearch: SET @SqlQuery='SELECT '+@FieldList+' FROM (SELECT row_number() over(ORDER BY '+@OrderField+') as rownum, '+@FieldList+' FROM '+@TableName+' WHERE '+@StrWhere +') as temp WHERE rownum BETWEEN ('+cast(@PageIndex as varchar)+'-1)*'+cast(@PageSize as varchar)+'+1 and '+cast(@PageIndex as varchar)+'*'+cast(@PageSize as varchar) + ' ORDER BY '+@OrderField --print @SqlQuery SET NOCOUNT ON execute(@SqlQuery) SET NOCOUNT OFF COMMIT TRAN

    上面是一个分页的存储过程,现在我在另外一个存储过程里面要调用它:
    SQL code
    if Name='A' BEGIN EXECUTE PagingRecord/*我想在这BEGIN与END里面写调用上面那个存储过程的方法,而且要带上那里面的几个参数.这里用几个变量来传,到时我在程序里调用这个A的时候,把PagingRecord的几个参数传进来就可以了*/ SELECT

    不知道有没有描述清楚,就是构造一个if Begin..END这种方式的,要调用上面的分页存储过程(这里面要传参数的).知道的大哥帮我下.谢谢.
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HEROWANG
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:46:421楼 得分:0
    没有看明白,你直接把参数写进去不就行了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newqq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:47:092楼 得分:0
    declare @sql varchar(500)
    set @sql='EXECUTE PagingRecord '参数1','参数2'...'
    if name='A'
    begin
    excute @sql
    end

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yrwx001
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:47:273楼 得分:8
    SQL code
    if Name='A' BEGIN PagingRecord @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szx1999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:49:254楼 得分:5
    SQL code
    exec SP_EXECUTESQL [dbo].[PagingRecord] 参数1,参数2,...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Smile_Wong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:49:365楼 得分:5
    对呀,直接 EXEC PagingRecord '参数1','参数2'...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szx1999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:53:286楼 得分:5
    我x,我写错了。。。
    丢人了,应该是:
    SQL code
    exec [dbo].[PagingRecord] 参数1,参数2,...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hellonet123
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:54:077楼 得分:0
    引用 3 楼 yrwx001 的回复:
    SQL codeif Name='A'
    BEGIN
      PagingRecord  @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount
    end


    这样就行?不用执行的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fcuandy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:54:268楼 得分:2
    just see this


    http://topic.csdn.net/u/20080722/15/0df5a327-b319-46d8-8cf5-40c4e3c785ab.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hellonet123
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 16:13:129楼 得分:0
    SQL code
    SQL codeif Name='A' BEGIN PagingRecord @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount end --PagingRecord后面可不可以带where参数.就是PagingRecord里面的PageIndex=A存储过程声明的@PageIndex,我要的是这种效果
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HEROWANG
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 16:30:2110楼 得分:10
    那还不就是把参数直接写进去就行了,另外带了参数,要修改一下的。

    SQL codeif Name='A'
    BEGIN
      exec PagingRecord  @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount
    end
    --PagingRecord后面可不可以带where参数.就是PagingRecord里面的PageIndex=A存储过程声明的@PageIndex,我要的是这种效果

    带上exec要不执行不了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hery2002
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-08-08 18:03:1711楼 得分:5
    如果有Output参数,
    则使用sp_excutesql
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangping_li
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 09:24:5912楼 得分:10
    Name='A'
    BEGIN
      PagingRecord  @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount
    end
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved