我对“我应该使用动态sql创建数据库表吗?”有些含糊不清。 有没有更安全的替代方式。
例如:
ALTER PROCEDURE [dbo].[GenerateTable]
-- @Columns varchar(300)
@TableName varchar(25),
@Column varchar(1000),
@SQl varchar(1000) output
AS
BEGIN
DECLARE @Columns xml
--DECLARE @SQL varchar(500)
--DECLARE @Column varchar(225)
DECLARE @PreSQL varchar(1000)
--DECLARE @ResultSet varchar(MAX)
DECLARE @Temp varchar(20)
DECLARE @StarIndex int
DECLARE @MaxLength varchar(20)
Select @Columns =( Select * From OPENROWSET(
BULK 'C:\Data\csvToXml.xml',SINGLE_BLOB)x)
SELECT @PreSQL='CREATE TABLE '+@TableName+' ('
SELECT @SQL=''
SELECT @SQl=@PreSQL +@Column+')'
SELECT @SQL=REPLACE(@SQL,'/','_')
exec(@SQL)
END
TIA!