if @ItemNo='' then
  select * from test
else
  select * from test where ……

解决方案 »

  1.   

    --不知是不是这个意思
    --测试数据
    CREATE TABLE [PTL_CMT_Material]([sitem_itemno] VARCHAR(50))
    INSERT [PTL_CMT_Material] SELECT '11-040002200'
    UNION ALL SELECT '11-034068041'
    UNION ALL SELECT '14-124071343'
    UNION ALL SELECT '14-124000263'
    --存储过程
    CREATE PROC p_test
    @ItemNo varchar(10)=''
    AS
    SET NOCOUNT ON
    DECLARE @sql varchar(8000)
    SET @sql='SELECT * FROM [PTL_CMT_Material] WHERE 1=1'
    IF @ItemNo <> ''
    SET @sql=@sql+' AND [sitem_itemno]='''+@ItemNo+''''
    EXEC(@sql)
    GO
    --执行
    DECLARE @ItemNo VARCHAR(50)
    SET @ITEMNO=''  --@ItemNo为''
    EXEC P_TEST @ITEMNO
      

  2.   

    可能是我没有阐述清楚,我的意思是我想写个存储过程,里面的一个变量是@ItemNo ,定义@ItemNo =‘’时选择@ItemNo 为PTL_CMT_Material表中的sitem_itemno列中的每一个数据都执行一下存储过程