ALTER PROCEDURE dbo.StoredProcedure9 
@page int=4,
@px bit=0   //这里的问题
AS

declare @sql varchar(800)
if @px=1
set @sql='select top  ' +cast(@page as varchar)+ '* from wupin order by id desc'
else
set @sql='select top  ' +cast(@page as varchar)+ '* from wupin'
exec(@sql)
为什么在运行时。无论输入0或1都提示:@PX该输入参数不能转换?
但吧bit该为int,条件再改下,却能运行。

解决方案 »

  1.   

    下面代码我测试过了,没问题呀:ALTER       PROCEDURE   tmp6
    @page   int=4,
    @px   int=0       --这里的问题
    ASdeclare   @sql   varchar(800)
    if   @px=1
    set   @sql= 'select top '+cast(@page   as   varchar)+ ' *   from Customers  order   by CustomerID'
    else
    set   @sql= 'select top '+cast(@page   as   varchar)+ ' *   from CustomerID'
    exec(@sql) 
      

  2.   

    我是在 northwind 数据库中试的。
      

  3.   

    以下存储过程在SQL Server 2000 开发人员版 SP4下执行通过:CREATE PROCEDURE StoredProcedure9   
    @page int=4, 
    @px   bit=0
    AS 
    BEGIN
      declare @sql varchar(800) 
      if   @px=1 
        set @sql= 'select top '+cast(@page as varchar)+' * from sysobjects order by id desc ' 
      else 
        set @sql= 'select top '+cast(@page as varchar)+' * from sysobjects ' 
      
      exec(@sql) 
    END
    goexec StoredProcedure9drop PROCEDURE StoredProcedure9
      

  4.   

    declare @a as bit 
    set @a =0select @aif @a=0select @a
    else 
    select @a
      

  5.   

    Microsoft SQL 企业管理器
    Microsoft Corporation
    版本: 8.0
    我的Microsoft SQL2000有问题?
    郁闷