【SQLServer】sqlcmdで使えるスクリプト変数について(setvar コマンド)
overview
batでsqlを実行する場合はsqlcmdを使うことが多いかと思います。
サーバ名やユーザ情報の指定の仕方は知っていましたが、
setvar コマンドなるものを今回初めて知ったので備忘録として残します。
↓よく使用する変数
変数 | パラメータ |
---|---|
SQLCMDUSER | -U |
SQLCMDPASSWORD | -P |
SQLCMDSERVER | -S |
SQLCMDDBNAME | -d |
setvar コマンドについて
$()の表記でSQL構文の中に埋め込むことができます。
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE x.BusinessEntityID < 5;
SELECT x.$(ColumnName)
FROM $(TableName)
WHERE x.BusinessEntityID < 5;
t-sqlでは変数としてはdecraleがありますが、
あくまで値やテーブルの格納となるため、
スクリプト変数のようにカラム名やテーブル名として使うことはできません。
値の渡し方
引数(-v)として渡すことができます。
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
また、ファイル内での宣言もできます。
:setvar DataBaseName "db1"
:setvar ColumnName "col1"
:setvar TableName "table1"
use $(DataBaseName)
SELECT x.$(ColumnName)
FROM $(TableName)
WHERE x.BusinessEntityID < 5;
外からパラメータを渡せるというメリットと、
今までこういうことをやろうと思うと、
文字列結合して exec等で実行という感じでしたが、
別の手法があるというのを知れました。
ssmsでsetvalコマンドを使う方法
setvalコマンドはsqlcmdで使えるスクリプト変数のため、
t-sqlを書くssmsでは一見使えなさそうに思えます。
が、sqlcmdモードに切り替えることで使えるようになります。
Author And Source
この問題について(【SQLServer】sqlcmdで使えるスクリプト変数について(setvar コマンド)), 我々は、より多くの情報をここで見つけました https://qiita.com/m_hama123/items/0d24400f07b67ad58d18著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .