GDDとは「Gut's Driven Development」の略です。簡単にいうとガッツ駆動方式のシステム開発です。 えぇまぁ、私の開発スタイルです。このBlogでは、そんなシステム開発の作業で発見したことを記録していきます。 (Google Developer Daysとはなんの関係ありません。)
【概要】 bcpコマンドによりCSVのエクスポートを行える。 OracleのSQLローダのようなものである。 コマンドプロンプトからSQLServerに対し認証を行い、 任意のテーブル/クエリでimport/exportを行う。 これを敢えてストアドから実行するサンプルを示す。 【コード例】 ■テーブル情報を直接出力 DECLARE @CMD VARCHAR(1000); SET @CMD = ' bcp [dbo].[TABLEA] out C:\WK\TABLEA.csv -Usa -Pxxxxx -S MSSQLSERVER' EXECUTE master.dbo.xp_cmdshell @CMD ■クエリを実行してCSV出力 DECLARE @CMD VARCHAR(1000); --Windows認証の場合の例 SET @CMD = ' bcp "select * from ta
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance 指定した sql_handleによって識別される SQL バッチのテキストを返します。 このテーブル値関数は、システム関数 fn_get_sql に代わるものです。 構文 sys.dm_exec_sql_text(sql_handle | plan_handle) 引数 sql_handle は、実行中または現在実行中のバッチを一意に識別するトークンです。 sql_handle は varbinary(64)です。 sql_handleは、次の動的管理オブジェクトから取得できます。 sys.dm_exec_query_stats sys.dm_exec_requests sys.dm_exec_cursors sys.dm_exec_xml_handles sys.dm_
前回の「条件分岐のあるストアドプロシージャ」に引き続き、ストアドプロシージャの作成に挑戦します。今回は、前回のIF文による条件分岐から、WHILE文により繰り返し実行するSQL文を使用したストアドプロシージャを取り上げます。 では早速、例題を実行しながら、SQLの確認をしていきましょう。 誕生日の月ごとに従業員名を表示するストアドプロシージャ 今回は、従業員テーブル(Employees)に保存されている誕生日(BirthDate)を基に、誕生日月ごとの従業員リストを作成するストアドプロシージャを作成します。クエリアナライザから下記のSQLを実行し、SelectBirthdayByMonthというストアドプロシージャを作成してみましょう。
SQLServerでテーブル型を戻り値とする関数を作る SQLServerではINT型やVARCHAR型などを返す関数と同様にユーザー定義テーブル型を戻り値とする関数を作成できます。 テーブル型を戻り値とする関数は通常の関数と同様にCREATE FUNCTIONで作成します。 CREATE FUNCTION [dbo].[test_function] ( @param1 VARCHAR(MAX) ='' ,@param2 VARCHAR(MAX) ='' ) RETURNS @retTbl TABLE ( no INT ,name VARCHAR(20) ) BEGIN INSERT INTO @retTbl VALUES( 1, '太郎' ) ; INSERT INTO @retTbl VALUES( 2, '次郎' ) ; INSERT INTO @retTbl VALUES( 3,
SQLのパフォーマンスチューニング。 インデックスを貼ったり、 Group by、distinct、 副問い合わせ、in句、union、exists句、などなど、join、outer join を使ってテーブルの結合順序を制御したり、やるだけやって見ても、どうしても速くならなかった場合には、SQLの最後に OPTION (FORCE ORDER) を追加すると、うまく高速化が図れる場合があります。ただし、ある程度RDBMSに精通していて、効率の良いテーブル結合順序に配慮したSQL文であることが前提となるので、上級者向けだと思います。 FORCE ORDER は SQL SERVER で使うことができるクエリヒントで、テーブル結合順序をオプティマイザに委ねるのではなく、from 句に記述したとおりに強制的に結合させることができます。通常はオプティマイザの方が賢いということで頻繁に使用すること
したい。 SQLServer 2005 で。 ちなみにストアドプロシージャとかではなく ASP.NET から SQL 文投げる形で。 ついでに 「更新する場合は変更があった場合のみ更新」 とかにしたい。 SQLServer 2008 だと MERGE というのが使えるらしいのだけど、2005 なので使えなかった… -- テスト用テーブル CREATE TABLE [dbo].[Hoge] ( [HogeID] [bigint] NOT NULL, [HogeCD] [char](3) NOT NULL, [HogeName] [nvarchar](10) COLLATE Japanese_CI_AS NULL, CONSTRAINT [PK_Hoge] PRIMARY KEY CLUSTERED ( [HogeID] ASC ) WITH (STATISTICS_NORECOMPUTE =
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く