今天有一老同學問我一個用存儲過程創建數據表的問題,這可把我問住了,我不會用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)
以上部分內容(文字、圖片)收集于互聯網,版權歸原作者所有。感謝每一位辛勤著寫的作者,感謝每一位的分享。免責聲明:如有侵犯您的原創版權請告知,我們將盡快刪除相關內容,感謝您的理解與支持。