create proc sp_create_table(@table_name varchar(100)
as 
  exec('create table '+@table_name+' ( myname varchar(100),  sex   smallint)')

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2364/2364046.xml?temp=.829693
    [交流]动态SQL语句
      

  2.   

    sql server中好像没有循环的语句?有啊。
      

  3.   

    use pubs
    go
    create proc sp_create_table(@table_name varchar(100)
    as 
      exec('create table '+@table_name+'
    ( myname varchar(100),
      sex   smallint
    )')
      

  4.   

    示例
    A. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE
    在下例中,如果平均价格少于 $30,WHILE 循环就将价格加倍,然后选择最高价。如果最高价少于或等于 $50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过 $50,然后退出 WHILE 循环并打印一条消息。USE pubs
    GO
    WHILE (SELECT AVG(price) FROM titles) < $30
    BEGIN
       UPDATE titles
          SET price = price * 2
       SELECT MAX(price) FROM titles
       IF (SELECT MAX(price) FROM titles) > $50
          BREAK
       ELSE
          CONTINUE
    END
    PRINT 'Too much for the et to bear'B. 在带有游标的过程中使用 WHILE
    以下的 WHILE 结构是名为 count_all_rows 过程中的一部分。下例中,该 WHILE 结构测试用于游标的函数 @@FETCH_STATUS 的返回值。因为 @@FETCH_STATUS 可能返回 –2、-1 或 0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取 (0) 后将执行 BEGIN...END 循环内部的 SELECT 语句。USE pubs
    DECLARE tnames_cursor CURSOR
    FOR
       SELECT TABLE_NAME 
       FROM INFORMATION_SCHEMA.TABLES
    OPEN tnames_cursor
    DECLARE @tablename sysname
    --SET @tablename = 'authors'
    FETCH NEXT FROM tnames_cursor INTO @tablename
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
       IF (@@FETCH_STATUS <> -2)
       BEGIN   
          SELECT @tablename = RTRIM(@tablename) 
          EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM ' 
                + @tablename )
          PRINT ' '
       END
       FETCH NEXT FROM tnames_cursor INTO @tablename
    END
    CLOSE tnames_cursor
    DEALLOCATE tnames_cursor
      

  5.   

    动态的sql语句基本使用
    use pubs
    go
    create proc sp_create_table(@table_name varchar(100)
    as 
      exec('create table '+@table_name+'
    ( myname varchar(100),
      sex   smallint
    )')
      

  6.   

    use pubs
    go
    create proc sp_create_table(@table_name varchar(100)
    as 
      exec('create table '+@table_name+'
    ( myname varchar(100),
      sex   smallint
    )')
    go