SQLServer 里用存儲過程創建表
來源:本站日期:2006-5-13 2:32:01
今天有一老同學問我一個用存儲過程創建數據表的問題,這可把我問住了,我不會用SQLServer的存儲過程創建數據表!就是ORACLE我也剛剛學會如何用動態SQL創建數據表!我對SQLServer的存儲過程本來就是一無所知啊! 請教了我的同事
今天有一老同學問我一個用存儲過程創建數據表的問題,這可把我問住了,我不會用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)