急:用存储过程建表的问题,在线

goodsong 2004-04-01 10:34:09
--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)
CREATE TABLE @TableName(
date_time datetime not null,
ownerstation int not null,

)
就是要建一个表,表的名字是由传入的参数决定的
但我用了@TableName,后面的create table 报错,请指点!
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodsong 2004-04-01
  • 打赏
  • 举报
回复
谢谢各位!
zjcxc 2004-04-01
  • 打赏
  • 举报
回复
因为你的表名第一个是数字,所以要用[]


如果你的表名中有空格之类的,也要用[]
goodsong 2004-04-01
  • 打赏
  • 举报
回复
谢谢两位
有一问题

progress99(如履薄冰)的不能通过,
我找了半天原来是
zjcxc(: 邹建 :) 的 CREATE TABLE ['+@TableName+'](
多了两个[ ]
能不能解释一下为什么?
是因为表名的第一个字符不能是数字?
LoveSQL 2004-04-01
  • 打赏
  • 举报
回复
使用动态的sql就解决了
exec(' CREATE TABLE ['+@TableName+'](
date_time datetime not null,
ownerstation int not null,

)
')
zjcxc 2004-04-01
  • 打赏
  • 举报
回复
--用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,

)
')
progress99 2004-04-01
  • 打赏
  • 举报
回复
字段信息若要做為存儲過程的傳入參樓也可用此方法。
progress99 2004-04-01
  • 打赏
  • 举报
回复
--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)
progress99 2004-04-01
  • 打赏
  • 举报
回复
使用這種方式:

exec(' create table '+@TableName+'字段信息')

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧