免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3518 | 回复: 12
打印 上一主题 下一主题

VS调用下面的存储过程,为什么没有显示? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-10 11:26 |只看该作者 |倒序浏览
这是一个查询的存储过程,在SQL里执行均没有问题,可是用VS调用时,在任何条件都不输入的情况下,却什么都没有显示,为什么?

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

=============================================
ALTER PROCEDURE [dbo].[SP_SELECT_GoodsCategoryDict]
        @PKID                                                int = null,
        @CategoryName                                varchar(20) = null,
        @ParentNumber                                int = null,

        @reason                                                varchar(50) out
AS
        DECLARE @l_PKID                                        varchar(4)
        DECLARE @l_CategoryName                        varchar(20)
        DECLARE @l_ParentNumber                        varchar(4)

        DECLARE @sql                                        varchar(500)
BEGIN
--@sql = @sql + \' and B like \'\'\' + @l_b +\'\'\'\'
        set @sql =        \' select * from GoodsCategoryDict \'

        if len(cast(@PKID as varchar(4))) = 0 or (@PKID is null) or @PKID = \'\'
        begin
                set @l_PKID = \'%\'
        end                       
        else
        begin
                set @l_PKID = @PKID
        end
        set @sql = @sql + \'where (cast(PKID as varchar(4)) like \'\'\'+ @l_PKID + \'\'\')\'

        if        (@CategoryName = \'\'\'\'\'\') or (len(@CategoryName) = 0) or (@CategoryName is null)
        begin
                set @l_CategoryName = \'%\'
        end
        else
        begin
                set @l_CategoryName = \'%\' + @CategoryName + \'%\'
                set @sql = @sql + \'and (cast(CategoryName as varchar(4)) like \'\'\'+ @l_CategoryName + \'\'\')\'
        end
        if len(cast(@ParentNumber as varchar(4))) = 0 or (@ParentNumber is null) or @PKID = \'\'
        begin
                set @l_ParentNumber = \'%\'
        end                               
        else
        begin
                set @l_ParentNumber = @ParentNumber
                set @sql = @sql + \'and (cast(ParentNumber as varchar(4)) like \'\'\'+ @l_ParentNumber + \'\'\')\'
        end

        --set @reason = @sql
        execute (@sql)
       
        if(@@rowcount<=0)
        begin
                set @reason=\'没有查找到符合条件。。。\'
                return 1
        end       

END


在VS中,所运用的方法是,下拉框与该存储过程绑定调用。

论坛徽章:
0
2 [报告]
发表于 2007-07-10 11:46 |只看该作者
@reason从来没赋过值啊

论坛徽章:
0
3 [报告]
发表于 2007-07-10 12:15 |只看该作者
execute (@sql)

if(@@rowcount<=0)
begin
set @reason=\'没有查找到符合条件。。。\'
return 1
end


◎SQL执行后,赋值的

论坛徽章:
0
4 [报告]
发表于 2007-07-10 14:34 |只看该作者
高手帮忙看一下吧~~~~

论坛徽章:
0
5 [报告]
发表于 2007-07-10 14:41 |只看该作者
最初由 jingjing5a1 发布
[B]execute (@sql)

if(@@rowcount<=0)
begin
set @reason=\'没有查找到符合条件。。。\'
return 1
end


◎SQL执行后,赋值的 [/B]


但是你的过程不一定会进这个条件内吧。
如果进不来,不就没结果了。

论坛徽章:
0
6 [报告]
发表于 2007-07-10 14:50 |只看该作者
如果没有执行@reason就是null应该也没有关系吧。
只要我的select 语句能够执行,在调用存储过程后,就应该能取到select 的结果了,不是吗?

论坛徽章:
0
7 [报告]
发表于 2007-07-10 15:18 |只看该作者
@reason作为参数没有初始化,也没有输入值,所以存储过程无法执行。

@reason varchar(50)=null[/COLOR] out

论坛徽章:
0
8 [报告]
发表于 2007-07-10 16:02 |只看该作者
还是不行,存储过程里SELECT出的内容仍然没有。:(,到底是怎么回事呢?

论坛徽章:
0
9 [报告]
发表于 2007-07-10 16:16 |只看该作者
在存储过程中加上
SET NOCOUNT ON            ---程序开始处
SET NOCOUNT OFF           ---程序运行完后

ALTER PROCEDURE [dbo].[SP_SELECT_GoodsCategoryDict]
@PKID int = null,
@CategoryName varchar(20) = null,
@ParentNumber int = null,

@reason varchar(50) out
AS
SET NOCOUNT ON   
...
SET NOCOUNT OFF
END

论坛徽章:
0
10 [报告]
发表于 2007-07-10 16:24 |只看该作者
好的,我试试。

具体情况是这样的。如果我把所有的参数全部去掉。是用select * from GoodsCategoryDict ,就能显示出来所有的数据。。。 可是一旦有参数,就都不显示了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP