1

SQL既存の の下部にtext( ) を追加/追加する必要がありますscript

私は私のためSTORED PROCEDUREに生成するを持ってINSERT statementsいます。それらは割り当てられているので、現時点では目的の .xml にコピーして貼り付けていますscripts

これは基本的に SQL がどのように見えるかです:

SELECT '' + CHAR(13) + CHAR(10) + 'EXECUTE [procSystemAppEntity_InsertOrUpdate] ' + CHAR(13) + CHAR(10) + ' @SystemUID = @SystemUID' + CHAR(13) + CHAR(10) 
+ ',@SystemAppCode = @SystemAppCode' + CHAR(13) + CHAR(10) 
+ ',@SystemAppEntityTypeCode = N''' + saet.[SystemAppEntityTypeCode] + '''' + CHAR(13) + CHAR(10) 
+ ',@SystemAppEntityUID = '''+ CAST((SELECT NEWID()) AS nvarchar(max)) + '''' + CHAR(13) + CHAR(10) 
+ ',@SystemAppEntityCode = ''' + tab.name + '''' + CHAR(13) + CHAR(10) 
+ ',@SystemAppEntityName = N''' + tab.name + '''' + CHAR(13) + CHAR(10) 
+ ',@TableName = N''' + tab.name + '''' + CHAR(13) + CHAR(10) 
+ ',@TableKeyColumnName = N''' + tab.name + 'ID''' + CHAR(13) + CHAR(10) 
+ ',@TableKeyCodeColumnName = N''' + tab.name + 'Code''' + CHAR(13) + CHAR(10) 
+ ',@ManagedAssemblyName = N''' + CASE WHEN @SystemAppEntityManagedAssemblyName IS NULL THEN '' ELSE @SystemAppEntityManagedAssemblyName END + '''' + CHAR(13) + CHAR(10) 
+ ', @ManagedNamespace = N''' + CASE WHEN @SystemAppEntityManagedNamespace IS NULL THEN '' ELSE @SystemAppEntityManagedNamespace END + '''' + CHAR(13) + CHAR(10) 
+ ', @ManagedClassName = ''' + tab.name + '''' + CHAR(13) + CHAR(10) 
+ ', @IsMultiple = ' + CAST(@IsMultiple AS varchar(1)) + CHAR(13) + CHAR(10) 
+ ', @IsCodeGenerated = 1' + CHAR(13) + CHAR(10) 
+ ', @IsActive = 1' + CHAR(13) + CHAR(10) 
+ ', @SystemAppUserID = @CreationSystemAppUserID ' + CHAR(13) + CHAR(10) + '; '
FROM sys.tables tab INNER JOIN
    [SystemAppEntityType] saet ON saet.[IsMultipleEntity] = CASE WHEN RIGHT(tab.name, 1) = 's' THEN 1 ELSE 0 END AND saet.[IsNavigationEntity] = 0 AND saet.IsSystemEntity = CASE WHEN LEFT(tab.name, 3) = 'Sys' THEN 1 ELSE 0 END
WHERE (tab.name NOT IN (SELECT e.[TableName] FROM [SystemAppEntity] e))
    AND (tab.name = @Code)

出力は次のとおりです。

EXECUTE [procSystemAppEntity_InsertOrUpdate] 
 @SystemUID = @SystemUID
,@SystemAppCode = @SystemAppCode
,@SystemAppEntityTypeCode = N'App-S'
,@SystemAppEntityUID = '11E347C7-7E69-4555-A6F0-2AFE142FC25F'
,@SystemAppEntityCode = 'Revision'
,@SystemAppEntityName = N'Revision'
,@TableName = N'Revision'
,@TableKeyColumnName = N'RevisionID'
,@TableKeyCodeColumnName = N'RevisionCode'
,@ManagedAssemblyName = N'SomeManagedAssemblyName '
, @ManagedNamespace = N'SomeManagedNamespace '
, @ManagedClassName = 'Revision'
, @IsMultiple = 0
, @IsCodeGenerated = 1 
, @IsIntegratedToStaging = 1
, @IsActive = 1
, @SystemAppUserID = @CreationSystemAppUserID 
;

Output statementsそうは言っても、目的のスクリプトに直接書き込み/追加する方法はありますか?

スクリプトの最後に追加したいだけです。これは可能ですか?もしそうなら、どうすればこれを達成できますか?

4

2 に答える 2

1
SELECT '' + CHAR(13) + CHAR(10) + 'EXECUTE [procSystemAppEntity_InsertOrUpdate] ' + CHAR(13) + CHAR(10) + ' @SystemUID = @SystemUID' + CHAR(13) + CHAR(10)  
+ ',@SystemAppCode = @SystemAppCode' + CHAR(13) + CHAR(10)  
+ ',@SystemAppEntityTypeCode = N''' + saet.[SystemAppEntityTypeCode] + '''' + CHAR(13) + CHAR(10)  
+ ',@SystemAppEntityUID = '''+ CAST((SELECT NEWID()) AS nvarchar(max)) + '''' + CHAR(13) + CHAR(10)  
+ ',@SystemAppEntityCode = ''' + tab.name + '''' + CHAR(13) + CHAR(10)  
+ ',@SystemAppEntityName = N''' + tab.name + '''' + CHAR(13) + CHAR(10)  
+ ',@TableName = N''' + tab.name + '''' + CHAR(13) + CHAR(10)  
+ ',@TableKeyColumnName = N''' + tab.name + 'ID''' + CHAR(13) + CHAR(10)  
+ ',@TableKeyCodeColumnName = N''' + tab.name + 'Code''' + CHAR(13) + CHAR(10)  
+ ',@ManagedAssemblyName = N''' + CASE WHEN @SystemAppEntityManagedAssemblyName IS NULL THEN '' ELSE @SystemAppEntityManagedAssemblyName END + '''' + CHAR(13) + CHAR(10)  
+ ', @ManagedNamespace = N''' + CASE WHEN @SystemAppEntityManagedNamespace IS NULL THEN '' ELSE @SystemAppEntityManagedNamespace END + '''' + CHAR(13) + CHAR(10)  
+ ', @ManagedClassName = ''' + tab.name + '''' + CHAR(13) + CHAR(10)  
+ ', @IsMultiple = ' + CAST(@IsMultiple AS varchar(1)) + CHAR(13) + CHAR(10)  
+ ', @IsCodeGenerated = 1' + CHAR(13) + CHAR(10)  
+ ', @IsActive = 1' + CHAR(13) + CHAR(10)  
+ ', @SystemAppUserID = @CreationSystemAppUserID ' + CHAR(13) + CHAR(10) + '; 
Insert into table(...) ;' 
FROM sys.tables tab INNER JOIN 
    [SystemAppEntityType] saet ON saet.[IsMultipleEntity] = CASE WHEN RIGHT(tab.name, 1) = 's' THEN 1 ELSE 0 END AND saet.[IsNavigationEntity] = 0 AND saet.IsSystemEntity = CASE WHEN LEFT(tab.name, 3) = 'Sys' THEN 1 ELSE 0 END 
WHERE (tab.name NOT IN (SELECT e.[TableName] FROM [SystemAppEntity] e)) 
    AND (tab.name = @Code) 
于 2012-07-18T09:20:18.843 に答える
0

使用している SQL Server のバージョンは何ですか?

SQL Server 2008 以降を使用している場合は、Generate Script ユーティリティ自体を使用して INSERT スクリプトを生成できます。

SQL Server 2005 以前 (私は SQL 2K でも試しました) では、特定のテーブルの INSERT スクリプトを生成できるかなり優れた stroed proc があります。http://vyaskn.tripod.com/code/generate_inserts.txtをチェックしてください

于 2012-07-18T09:21:51.387 に答える