CREATE PROCEDURE create_table
@tab_name varchar(20)--定义参数
AS
--declare @tablename varchar(10)
declare @i int --定义变量
set @i=1 --变量赋值
while @i<10
begin
--create table ss(id varchar(10) not null,name varchar(20),address varchar(20));
exec('create table '+@tab_name+@i+'(
id nvarchar(10) not null,
name nvarchar(20),
address nvarchar(20)
)')
set @i = @i+1
END
GO
--执行存储过程
exec create_table 'table_transflow_'
结果如下:
工作中使用的:
CREATE PROCEDURE create_table1
@tab_name nvarchar(20)--定义参数
AS
--declare @tablename varchar(10)
declare @i int --定义变量
set @i=10 --变量赋值
while @i<20
begin
--create table ss(id varchar(10) not null,name varchar(20),address varchar(20));
exec(
'CREATE TABLE '+@tab_name+@i+'(
[ID] [decimal](18, 0) IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[TransNo] [nvarchar](12) NULL,
[BuCode] [nvarchar](6) NULL,
[BuName] [nvarchar](50) NULL,
[PosNum] [nvarchar](10) NULL,
[CardPrintNum] [nvarchar](10) NULL,
[TrDate] [nvarchar](10) NULL,
[TrTime] [nvarchar](10) NULL,
[Amount] [money] NULL,
[Fees] [money] NULL,
[Type] [nvarchar](10) NULL,
[ClearMarkCard] [nvarchar](1) NULL,
[ClearMarkBu] [nvarchar](1) NULL,
[ReMarks] [nvarchar](100) NULL,
[LiSign] [nvarchar](10) NULL,
[OffAmount] [money] NULL,
[FullPrice] [money] NULL,
[OPNum] [nvarchar](10) NULL,
CONSTRAINT [PK_'+@tab_name+@i+'] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)ON [PRIMARY]
ALTER TABLE '+@tab_name+@i+' ADD CONSTRAINT [DF_'+@tab_name+@i+'_Fees] DEFAULT ((0)) FOR [Fees]
ALTER TABLE '+@tab_name+@i+' ADD CONSTRAINT [DF_'+@tab_name+@i+'_ClearMarkCard] DEFAULT ((0)) FOR [ClearMarkCard]
ALTER TABLE '+@tab_name+@i+' ADD CONSTRAINT [DF_'+@tab_name+@i+'_ClearMarkBu] DEFAULT ((0)) FOR [ClearMarkBu]
--默认值为10个0
ALTER TABLE '+@tab_name+@i+' ADD CONSTRAINT [DF_'+@tab_name+@i+'_LiSign] DEFAULT (((''0000000000''))) FOR [LiSign]
ALTER TABLE '+@tab_name+@i+' ADD DEFAULT ((0)) FOR [OffAmount]
ALTER TABLE '+@tab_name+@i+' ADD DEFAULT ((0)) FOR [FullPrice]')
set @i = @i+1
END
GO
--执行存储过程
exec create_table1 'Tbl_Fz'