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>'

我想做两件事:

  1. 让 SQL Server 将其保存在我的机器上,名称为 @indSubject.html(例如 C:\TEMP\HTMLOUTPUT\61-0036.html)
  2. 能够将不同的值传递给@indSubject(例如91-0003)。命令行式的东西?

我可以用 BCP 做到这一点吗?其他方式?

请注意,这是我所有的个人资料,并没有部署在 Web 服务器上,所以我不必太担心安全性、SQL 注入等(至少我希望我不要!)

4

2 回答 2

2

您可以使用SQLCMD相当轻松地完成此操作。

如果将现有查询保存为 .sql 文件,则可以使用 SQLCMD 执行此操作。

此外,SQLCMD 将允许您在 .sql 文件${indSubject}中指定一个变量,然后您可以从命令行提供该变量。

最后,使用-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 回答