使用输入参数在sql server中创建表

时间:2014-01-17 15:23:54

标签: sql sql-server

我想通过存储过程在SQL Server中创建一个表。

以下是我想做的一个例子:

create procedure test @Title nvarchar(50), @number int @chapter int
as
begin
  declare @nam nvrachar(50)
  set nam=@Title
  if exists(select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME=@Title)
  begin
    update @Title set number=@number
    where chapter=@chapter
  end
  else
  begin
    create table @Title ( number int null, chapter int null );
    insert into @Title values ( @number, @chapter )
  end
end

标题是用户从应用程序中选择的书籍,其传递给SQL Server。

1 个答案:

答案 0 :(得分:0)

这根本不是一个好主意,你真的每张书需要一张桌子吗?你应该有一张桌子,里面有所有书籍。无论如何,你需要动态SQL(所以先来看看here),所以这样的事情应该有用:

CREATE PROCEDURE test @Title NVARCHAR(50), @number INT, @chapter INT 
AS 
BEGIN 
    DECLARE @sql NVARCHAR(4000) 
    SET @sql = ''

    IF EXISTS(SELECT * FROM sys.tables WHERE name = @Title) 
    BEGIN 
        SET @sql = N'UPDATE '+QUOTENAME(@Title)+' 
                     SET number = @number 
                     WHERE chapter = @chapter;'

        EXEC sp_executesql @sql, N'@number INT, @chapter INT', @number, @chapter;
    END 
    ELSE 
    BEGIN 
        SET @sql = N'CREATE TABLE ' + QUOTENAME(@Title) + '(number INT NULL, chapter INT NULL);
                     INSERT INTO ' + QUOTENAME(@Title) + '
                     VALUES(@number,@chapter)'

        EXEC sp_executesql @sql, N'@number INT, @chapter INT', @number, @chapter;
    END
END