你的逻辑正好反了
应该是,当不存在该表时才创建该表,if语句应该这么写IF NOT (EXISTS(select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1))
应该是,当不存在该表时才创建该表,if语句应该这么写IF NOT (EXISTS(select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1))
@TableName varchar(20)--新建表名称
ASexec('IF NOT (EXISTS(select * from dbo.sysobjects where id = object_id(N'''+@TableName+''') and OBJECTPROPERTY(id, N''IsUserTable'') = 1))
begin
CREATE TABLE ['+@TableName+'] (
[id] [int] NOT NULL ,
[name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
END')
执行标量值的用户定义函数、系统过程、用户定义存储过程或扩展存储过程。同时支持 Transact-SQL 批处理内的字符串的执行 若要唤醒调用函数,请使用 EXECUTE stored_procedure 中描述的语法。语法
执行存储过程:[ [ EXEC [ UTE ] ]
{
[ @return_status = ]
{ procedure_name [ ;number ] | @procedure_name_var
}
[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ]
[ ,...n ]
[ WITH RECOMPILE ] 执行字符串:EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )