1

もっと複雑なクエリがありますが、基本的には HTML ページを作成します。

DECLARE @indSubject varchar(7)
SET @indSubject = '61-0036'

--  LOTS of query stuff here that makes a page.  For simplicity 
--  just use this:

SELECT '<html><body>' + @indSubject + '</body></html>'

私は2つのことをしたい:

  1. @indSubject.html (例: C:\TEMP\HTMLOUTPUT\61-0036.html) という名前で、SQL Server にこれを私のマシンのどこかに保存させます。
  2. @indSubject に異なる値を渡すことができます (例: 91-0003)。コマンドラインっぽい何か?

BCPでこれを行うことはできますか? 他の方法ですか?

注意してください、これはすべて私の個人的なものであり、これは Web サーバーに展開されていないため、セキュリティ、SQL インジェクションなどについてあまり心配する必要はありません (少なくとも、心配しないことを願っています!)

4

2 に答える 2

2

SQLCMDを使用すると、これをかなり簡単に実現できます。

既存のクエリを .sql ファイルとして保存すると、SQLCMD を使用してこれを実行できます。

さらに、SQLCMD を${indSubject}使用すると、コマンド ラインから指定できる .sql ファイル内の変数を指定できます。

最後に、-oスイッチを使用して結果をファイルに直接出力し、次の環境設定を使用して結果セットのヘッダーを抑制することができます。

:SETVAR SQLCMDHEADERS -1

于 2012-04-06T16:46:50.767 に答える
1

私の(そしてマイケルの)正気のために、ここに動作するように見えるコードがあります:

    :SETVAR SQLCMDHEADERS -1
    DECLARE @indSubject varchar(7)
    SET @indSubject='$(indSubject)'

    --  LOTS of query stuff here that makes a page.  For simplicity 
    --  just use this:


    SELECT '<html><body>' + @indSubject + '</body></html>'

このコマンドsqlcmd -E -S(Local)\SQLExpress -v indSubject = "61-0022" -dmyDatabase -y 0 -iC:\temp\test4.sql -oC:\temp\out.htmlを使用すると、ファイル out.html は次のようになります。

    <html><body>61-0022</body></html>
    (1 rows affected)
于 2012-04-06T19:06:58.967 に答える