if object_id('P_1','P')is not null drop proc P_1 
go
create proc p_1          
  @参数1 varchar(50),     
  @参数2 varchar(50), 
  @参数3 varchar(50),  
  @参数4 varchar(50), 
  @参数5 varchar(50)
as 
  if object_id('aa_080924','U')is not null drop table  aa_080924 
  create table aa_080924(名称 nvarchar(50) unique,列名 nvarchar(50),值 nvarchar(50)) 
  insert into aa_080924(名称,列名,值)values(@参数1,110,1020) 
  insert into aa_080924(名称,列名,值)values(@参数2,120,1030) 
  insert into aa_080924(名称,列名,值)values(@参数3,130,1040) 
  insert into aa_080924(名称,列名,值)values(@参数4,140,1050) 
  insert into aa_080924(名称,列名,值)values(@参数5,150,1060) 
  create unique index myclumn_cindex on aa_080924(值) 
go 
exec P_1 '参数1','参数2','参数3','参数4','参数5'昨天我也发过类似的例,我还是不太理解,求高手帮忙解答的同时加上注释,谢谢。上面是一段小代码,我想让aa_080924这张表的名字随时间变化而变化,比如说今天是20081007,生成这张表就应该是aa_081007,下面几行里也有aa_080924,要更改的话是不是都得需要修改下啊,怎么来实现它,求高手帮忙解决下,谢谢。

解决方案 »

  1.   

    --邹健书中例子,偶给你借用一下!
    --1. 执行字符串中的T-SQL
    DECLARE @sql nvarchar(max)
    SET @sql = N'SELECT * FROM sys.objects'
    EXEC(@sql)--1. 使用 EXEC 实现的动态参数存储过程
    CREATE PROC p_test
    @para1 varchar(10)=null,
    @para2 varchar(10)=null,
    @para3 varchar(10)=null,
    @para4 varchar(10)=null
    AS
    SET NOCOUNT ON
    DECLARE @sql varchar(8000)
    SET @sql='SELECT * FROM tbname WHERE 1=1'
    IF @para1 IS NOT NULL
    SET @sql=@sql+' AND col1='''+@para1+''''
    IF @para2 IS NOT NULL
    SET @sql=@sql+' AND col2='''+@para2+''''
    IF @para3 IS NOT NULL
    SET @sql=@sql+' AND col3='''+@para3+''''
    IF @para4 IS NOT NULL
    SET @sql=@sql+' AND col4='''+@para4+''''
    EXEC(@sql)
    GO
    /*======================================================*/--2. 使用 sp_executesql 实现的动态参数存储过程
    CREATE PROC p_test
    @para1 varchar(10)=null,
    @para2 datetime=null,
    @para3 varchar(10)=null,
    @para4 int=null
    AS
    SET NOCOUNT ON
    DECLARE @sql nvarchar(4000)
    SET @sql='SELECT * FROM tbname WHERE 1=1'
    +CASE WHEN @para1 IS NULL THEN '' ELSE ' AND col1=@para1' END
    +CASE WHEN @para2 IS NULL THEN '' ELSE ' AND col2=@para2' END
    +CASE WHEN @para3 IS NULL THEN '' ELSE ' AND col3=@para3' END
    +CASE WHEN @para4 IS NULL THEN '' ELSE ' AND col4=@para4' END
    EXEC sp_executesql @sql,N'
    @para1 varchar(10)=null,
    @para2 datetime=null,
    @para3 varchar(10)=null,
    @para4 int=null
    ',@para1,@para2,@para3,@para4
    GO
      

  2.   

    我看不太懂,对于SQL我只是个初学者,好多东西都看不到,正常学习中
      

  3.   


    --比如
    create table t1(id int unique)
    go