--split data related with our company CREATE PROCEDURE split_data @BeginDate DATETIME AS DECLARE @TableName VARCHAR(20) SET @TableName=YEAR(@BeginDate)+'split_results' IF NOT EXISTS ( SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1) declare @sql varchar(1000) set @sql=' CREATE TABLE '+@TableName+'( date_time datetime not null, ownerstation int not null ) ' exec(@sql)
--用exec就可以了:--split data related with our company CREATE PROCEDURE split_data @BeginDate DATETIME AS DECLARE @TableName VARCHAR(20) SET @TableName=YEAR(@BeginDate)+'split_results' IF NOT EXISTS ( SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1) exec(' CREATE TABLE ['+@TableName+']( date_time datetime not null, ownerstation int not null, ) ')
使用动态的sql就解决了 exec(' CREATE TABLE ['+@TableName+']( date_time datetime not null, ownerstation int not null, ) ')
CREATE PROCEDURE split_data
@BeginDate DATETIME
AS
DECLARE @TableName VARCHAR(20)
SET @TableName=YEAR(@BeginDate)+'split_results'
IF NOT EXISTS ( SELECT * FROM sysobjects
WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
declare @sql varchar(1000)
set @sql=' CREATE TABLE '+@TableName+'( date_time datetime not null, ownerstation int not null ) '
exec(@sql)
CREATE PROCEDURE split_data
@BeginDate DATETIME
AS
DECLARE @TableName VARCHAR(20)
SET @TableName=YEAR(@BeginDate)+'split_results'
IF NOT EXISTS ( SELECT * FROM sysobjects
WHERE id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
exec(' CREATE TABLE ['+@TableName+'](
date_time datetime not null,
ownerstation int not null, )
')
exec(' CREATE TABLE ['+@TableName+'](
date_time datetime not null,
ownerstation int not null, )
')
有一问题
progress99(如履薄冰)的不能通过,
我找了半天原来是
zjcxc(: 邹建 :) 的 CREATE TABLE ['+@TableName+'](
多了两个[ ]
能不能解释一下为什么?
是因为表名的第一个字符不能是数字?