日期:2014-05-18  浏览次数:20404 次

看一下:asp中调用有返回值的存储过程中碰到的奇怪问题
存储过程如下:
-----------------------------------------
create     procedure   test
(
    @Num         varchar(50),                        
    @Msg         varchar(200)   OUTPUT        
)
AS
BEGIN
    if(@Num   =1)
        begin
            set   @Msg   =   '你传入的是1 '
            exec( 'print   1 ')
        end
    else   if(@Num   =2)
        begin
            set   @Msg   =   '你传入的是2 '
            exec( 'print   2 ')
        end
END
--------------------------
SQL中调用此存储过程语句:
declare   @Num         varchar(50)
declare   @Msg         varchar(200)
set   @Num   =   '2 '
exec   test   @Num,@Msg   OUTPUT
print   @Msg

问题:在SQL中调用此存储过程不管@Num传入1还是2,@Msg变量中都会有值。
但在ASP中调此存储过程时@Msg变量的值则为空。如果把中间的那句exec( 'print   * ')去掉的话@Msg中就有值。加上这句话的话@Msg返回的值变为宽了。但在查询分析器中调用却始终有值。
高手们!谢谢了哦。!

------解决方案--------------------
...
AS
set nocount on--试试
BEGIN
....