SQL Server 2005 を実行しています。table1 という名前のテーブルを作成し、渡されたコンマ区切り値のリストを使用して、そのリストの各要素を列名として使用するストアド プロシージャを作成したいと考えています。
したがって、基本的には sp_procedurename(col1,col2,col3) のようになります
列 col1、col2、および col3 で table1 を作成します (そして、それらがすべて varchar(max) である場合、それも素晴らしいでしょう。
SQL Server 2005 を実行しています。table1 という名前のテーブルを作成し、渡されたコンマ区切り値のリストを使用して、そのリストの各要素を列名として使用するストアド プロシージャを作成したいと考えています。
したがって、基本的には sp_procedurename(col1,col2,col3) のようになります
列 col1、col2、および col3 で table1 を作成します (そして、それらがすべて varchar(max) である場合、それも素晴らしいでしょう。
CREATE PROCEDURE dbo.whatever -- do not use sp_ prefix!
@tablename SYSNAME,
@column_list VARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'CREATE TABLE dbo.' + QUOTENAME(@tablename) + '
(
[' + REPLACE(@column_list, ',', '] VARCHAR(MAX),
[')
+ '] VARCHAR(MAX)
);';
EXEC sp_executesql @sql;
END
GO
これは、既に存在する場合などのエラー処理を@tablename行わず、SQL インジェクションから保護するために何もしません。この列名のコンマ区切りリストがユーザーによって入力された場合は、細心の注意を払って続行してください。