我创建了3个存储过程:
以下是我执行存储过程的顺序:
EXEC MKMG_Build_Appt_Table_Daily
EXEC MKMG_Build_Appt_Table_Daily_Insert
一切都没有任何问题,但有没有更好的方法来实现这一目标?如果是这样,您能否提供任何建议和帮助 是否应该添加任何错误处理?
--Procedure 1
CREATE PROCEDURE [dbo].[MKMG_Build_Appt_Table]
@TableName NVARCHAR(128)
,@Column1Name NVARCHAR(128) ,@Column1DataType NVARCHAR(128)
,@Column2Name NVARCHAR(128) ,@Column2DataType NVARCHAR(128)
,@Column3Name NVARCHAR(128) ,@Column3DataType NVARCHAR(128)
,@Column4Name NVARCHAR(128) ,@Column4DataType NVARCHAR(128)
,@Column5Name NVARCHAR(128) ,@Column5DataType NVARCHAR(128)
,@Column6Name NVARCHAR(128) ,@Column6DataType NVARCHAR(128)
,@Column7Name NVARCHAR(128) ,@Column7DataType NVARCHAR(128)
,@Column8Name NVARCHAR(128) ,@Column8DataType NVARCHAR(128)
,@Column9Name NVARCHAR(128) ,@Column9DataType NVARCHAR(128)
,@Column10Name NVARCHAR(128) ,@Column10DataType NVARCHAR(128)
,@Column11Name NVARCHAR(128) ,@Column11DataType NVARCHAR(128)
,@Column12Name NVARCHAR(128) ,@Column12DataType NVARCHAR(128)
,@Column13Name NVARCHAR(128) ,@Column13DataType NVARCHAR(128)
,@Column14Name NVARCHAR(128) ,@Column14DataType NVARCHAR(128)
,@Column15Name NVARCHAR(128) ,@Column15DataType NVARCHAR(128)
,@Column16Name NVARCHAR(128) ,@Column16DataType NVARCHAR(128)
,@Column17Name NVARCHAR(128) ,@Column17DataType NVARCHAR(128)
,@Column18Name NVARCHAR(128) ,@Column18DataType NVARCHAR(128)
AS
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'CREATE TABLE '+@TableName + '_' + CONVERT(VARCHAR,GETDATE(),112) + '_' + CONVERT(VARCHAR,DATEADD(dd, 1, GETDATE()),112) +
'( ' + @Column1Name + ' '+ @Column1DataType + ','
+ @Column2Name + ' '+ @Column2DataType + ','
+ @Column3Name + ' '+ @Column3DataType + ','
+ @Column4Name + ' '+ @Column4DataType + ','
+ @Column5Name + ' '+ @Column5DataType + ','
+ @Column6Name + ' '+ @Column6DataType + ','
+ @Column7Name + ' '+ @Column7DataType + ','
+ @Column8Name + ' '+ @Column8DataType + ','
+ @Column9Name + ' '+ @Column9DataType + ','
+ @Column10Name + ' '+ @Column10DataType + ','
+ @Column11Name + ' '+ @Column11DataType + ','
+ @Column12Name + ' '+ @Column12DataType + ','
+ @Column13Name + ' '+ @Column13DataType + ','
+ @Column14Name + ' '+ @Column14DataType + ','
+ @Column15Name + ' '+ @Column15DataType + ','
+ @Column16Name + ' '+ @Column16DataType + ','
+ @Column17Name + ' '+ @Column17DataType + ','
+ @Column18Name + ' '+ @Column18DataType
+ ')'
EXEC (@SQLString)
--Procedure 2
CREATE PROCEDURE [dbo].[MKMG_Build_Appt_Table_Daily]
AS
EXEC MKMG_Build_Appt_Table 'downtime_appointments',
'person_id', 'uniqueidentifier',
'location_name', 'varchar(40)',
'appt_date', 'varchar(8)',
'begintime', 'char(4)',
'MRN', 'varchar(15)',
'patient', 'varchar(120)',
'age_years', 'varchar(3)',
'date_of_birth', 'varchar(8)',
'sex', 'char(1)',
'ethnicity', 'varchar(40)',
'language', 'varchar(100)',
'home_phone', 'varchar(10)',
'day_phone', 'varchar(20)',
'provider', 'varchar(75)',
'specialty', 'varchar(40)',
'event', 'varchar(30)',
'appt_type', 'char(1)',
'file_location', 'varchar(200)'
--Procedure 3
CREATE PROCEDURE [dbo].[MKMG_Build_Appt_Table_Daily_Insert]
AS
DECLARE @SQLString2 NVARCHAR(MAX)
SET @SQLString2 = 'INSERT INTO MUReports..downtime_appointments'+ '_' + CONVERT(VARCHAR,GETDATE(),112) + '_' + CONVERT(VARCHAR,DATEADD(dd, 1, GETDATE()),112) + ' ' +
'SELECT * FROM MUReports..downtime_appointments'
EXEC (@SQLString2)
INSERT INTO MUReports..downtime_appointments_audit_log
VALUES('downtime_appointments'+ '_' + CONVERT(VARCHAR,GETDATE(),112) + '_' + CONVERT(VARCHAR,DATEADD(dd, 1, GETDATE()),112), 'Y', GETDATE())
UPDATE MUReports..downtime_appointments_audit_log SET status = 'N'
WHERE appt_table_name = 'downtime_appointments' + '_' + CONVERT(VARCHAR,DATEADD(dd, -1, GETDATE()),112) + '_' + CONVERT(VARCHAR,GETDATE(),112)
--Audit_log
CREATE TABLE downtime_appointments_audit_log (
appt_table_name VARCHAR(100),
status VARCHAR(1),
time_stamp DATETIME
)
--downtime_appointments table
CREATE TABLE [dbo].[downtime_appointments](
[person_id] [uniqueidentifier] NULL,
[location_name] [varchar](40) NULL,
[appt_date] [varchar](8) NULL,
[begintime] [char](4) NULL,
[MRN] [varchar](15) NULL,
[patient] [varchar](120) NULL,
[age_years] [varchar](3) NULL,
[date_of_birth] [varchar](8) NULL,
[sex] [char](1) NULL,
[ethnicity] [varchar](40) NULL,
[language] [varchar](100) NULL,
[home_phone] [varchar](10) NULL,
[day_phone] [varchar](10) NULL,
[provider] [varchar](75) NULL,
[specialty] [varchar](40) NULL,
[event] [varchar](30) NULL,
[appt_type] [char](1) NULL,
[file_location] [varchar](200) NULL
) ON [PRIMARY]
答案 0 :(得分:0)
如果您想创建具有相同结构的表,最简单的方法是
select top 0 * into newtable from oldtable