1

私が持っているもの

現在、現在のディレクトリからすべての SQL ファイルを一時テーブルに挿入しています。

create table #tmpSQLFiles(SQLFileName varchar(max))  
set @SqlStatement = 'master.dbo.xp_cmdshell ''dir /b "' + @DirPath + '*.sql"'''

insert into #tmpSQLFiles
execute (@SqlStatement)

これはうまくいきます。

私が欲しいもの

varcharここで、特定の目的の文字列を格納できる追加の列をテーブルに追加します。

create table #tmpSQLFiles(SQLFileName varchar(max), MyString varchar(max))
set @SqlStatement = 'master.dbo.xp_cmdshell ''dir /b "' + @DirPath+ '*.sql"'''

私が試したこと

挿入はどうすればいいですか?私が試してみました :

insert into #tmpSQLFiles (SQLFileName, MyString) values (execute (@SqlStatement), 'aa')

また :

declare @ExecutedStmt varchar(max)
set @ExecutedStmt = execute (@SqlStatement)
-- But the above line is not correct.

これら2つのいずれかが私のために働くでしょう。その後、2 番目の列を挿入して更新したくありません。

どうすればこれを達成できるかについてのアイデアはありますか? ありがとうございました !

4

2 に答える 2

0

次のINSERTで結果を使用できるように、出力パラメーターを使用する必要があります。

 DECLARE @result INT, @sql NVARCHAR(512) 

    SET @sql = N'SELECT @result = COUNT(*) FROM ' + @dbname + '.INFORMATION_SCHEMA.TABLES' 

    EXEC sp_executesql 
        @query = @sql, 
        @params = N'@result INT OUTPUT', 
        @result = @result OUTPUT 

    PRINT @result
于 2013-02-04T09:15:36.170 に答える