SQLServer 里用存储过程创建表
作者:www.wangzhanbaojia.com 日期:2006/05/13 02:32:01
今天有一老同学问我一个用存储过程创建数据表的问题,这可把我问住了,我不会用SQLServer的存储过程创建数据表!就是ORACLE我也刚刚学会如何用动态SQL创建数据表!我对SQLServer的存储过程本来就是一无所知啊!
请教了我的同事,也是不知道如何弄!晕,看我们这些程序员当的!
问了一前的一个客户,到现在还没有答复.哎!
只好硬着头皮搞了!
以下是错误的:
CREATE PROCEDURE [dbo].[CTable]
@TABLE_NAME VARCHAR
AS
CREATE TABLE [dbo].[@TABLE_NAME] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Ww_Name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Ww_Category] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Sum] [int] NULL ,
[Ww_Price] [money] NULL ,
[Ww_SumPrice] [money] NULL ,
[Ww_Operator] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Jren] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Jdepartment] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_JMemo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_OITime] [datetime] NULL ,
[Ww_Memo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO EXEC CTable test
用上面的建的数据表名字就是 @TABLE_NAME,太错了!
以下是正确的过程
CREATE PROCEDURE [dbo].[CTable]
@TABLE_NAME VARCHAR(4)
AS
BEGIN
EXEC(
CREATE TABLE [dbo].[+@TABLE_NAME+] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Ww_Name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Ww_Category] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Sum] [int] NULL ,
[Ww_Price] [money] NULL ,
[Ww_SumPrice] [money] NULL ,
[Ww_Operator] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Jren] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_Jdepartment] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_JMemo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[Ww_OITime] [datetime] NULL ,
[Ww_Memo] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] )
END
GO
原来也是用字符串拼的啊!就像Oracle里的一样(类似于ORACLE里的动态SQL)