-1

たとえば、私はテーブルを持っています

create table T (
    A int, 
    B numeric(10,3), 
    C nvarchar(10), 
    D datetime, 
    E varbinary(8)
)

更新:これはテーブルの例の 1 つにすぎません。SQL 文字列を生成するための入力として、任意のテーブルを使用できます。

行に対して次の Sql を動的に生成する簡単な方法はありますか? (Quotes、プレフィックスを簡単にする組み込み関数はありますか?)

'declare 
    @A int = 1, 
    @B numeric(10,3) = 0.01, 
    @C nvarchar(10) = N''abcd'', 
    @D = ''10/1/2013'', 
    @E = 0x9123'
4

2 に答える 2

0

具体的に何を達成しようとしているのかわからない…このようなものには組み込み関数はありませんが、このようなクエリを使用して簡単に作成することができます…</p>

select 'DECLARE @A int = ' + TableA.A + 
', @B numeric(10,3) = ' + TableA.B + 
', @C nvarchar(10) = N''' + TableA.C + 
''', @D = ''' + TableA.D + ''''
from TableA 
WHERE PrimaryKeyColumn = some_value

上記のクエリをクリーンアップして、nvarchar を返す関数に変換するだけです

テーブル定義も動的に生成したい場合は可能ですが、システムビューを使用して特定のテーブルに対してこれを作成する必要があります。

このようなことを試して、ここから自分の道を進んでください

select T.name, C.name, TY.name, C.column_id
from sys.tables T
inner join sys.columns C on T.object_id = C.object_id
inner join sys.types TY on TY.system_type_id = C.system_type_id
where T.name = 'TableName'
order by C.column_id asc 
于 2013-09-13T10:41:56.217 に答える
0

いいえ、ありません。最も近い方法は、SQL Server Management Studio を使用することですが、それでも手動で変更する必要があります。データベースとテーブルを展開します。

テーブルを右クリックし、 、 をScript table As選択してからInsert To、新しいクエリ ウィンドウを選択します。これにより、出発点となる出力が生成されますが、変数は生成されません。自分でスクリプトを作成するか、生成された INSERT ステートメントを編集する必要があります。

コード例:

INSERT INTO MyDB].[dbo].[Table1] ([A] ,[B] ,[C]

VALUES
       (<A, int,>
       ,<B, float,>
       ,<C, nvarchar(10),>
      )

行く

于 2013-09-13T05:25:05.090 に答える