我想通过存储过程在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。
答案 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