北京网站设计 公司丁丁猫:今天有一老同学问我一个用存储过程创建数据表的问题,这可把我问住了,我不会用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) 

转发请注明:丁丁猫

猜你喜欢