简体   繁体   English

如何将T-SQL查询转换为存储过程?

[英]How to convert a T-SQL query into a Stored Procedure?

I am running SQL Server 2012 and I need to convert a T-SQL query into a Stored Procedure . 我正在运行SQL Server 2012并且需要将T-SQL查询转换为Stored Procedure My aim is to run a SQL job that will execute this Stored Procedure on a daily basis. 我的目标是运行一个SQL作业,该作业将每天执行此Stored Procedure

My T-SQL query stands as follows: 我的T-SQL查询如下:

DECLARE @Body NVARCHAR(MAX),
    @TableHead VARCHAR(1000),
    @TableTail VARCHAR(1000)

SET @TableTail = '</table></body></html>' ;
SET @TableHead = '<html><head>' + '<style>'
    + 'td {border: solid black;border-width: 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font: 11px arial} '
    + '</style>' + '</head>' + '<body>' + 'Report generated on : '
    + CONVERT(VARCHAR(50), GETDATE(), 106) 
    + ' <br> <table cellpadding=0 cellspacing=0 border=0>' 
    + '<tr> <td bgcolor=#E6E6FA><b>StayYear</b></td>'
    + '<td bgcolor=#E6E6FA><b>Market</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jan</b></td>'
    + '<td bgcolor=#E6E6FA><b>Feb</b></td>'
    + '<td bgcolor=#E6E6FA><b>Mar</b></td>'
    + '<td bgcolor=#E6E6FA><b>Apr</b></td>'
    + '<td bgcolor=#E6E6FA><b>May</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jun</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jul</b></td>'
    + '<td bgcolor=#E6E6FA><b>Aug</b></td>'
    + '<td bgcolor=#E6E6FA><b>Sep</b></td>'
    + '<td bgcolor=#E6E6FA><b>Oct</b></td>'
    + '<td bgcolor=#E6E6FA><b>Nov</b></td>'
    + '<td bgcolor=#E6E6FA><b>Dec</b></td>';

SET @Body = ( SELECT *
              FROM  View1               
                FOR   XML RAW('tr'),
                      ELEMENTS
            )


SELECT  @Body = @TableHead + ISNULL(@Body, '') + @TableTail

What are the steps to convert the above into a Stored Procedure ? 将上述内容转换为Stored Procedure什么?

You Can add make your script as a Stored Procedure by simply binding your Query inside a Create Procedure statement. 您可以通过将查询绑定到“ Create Procedure语句中来将脚本添加为存储过程。 Like this 像这样

CREATE PROCEDURE <Database Schema>.<Procedue Name>
AS
BEGIN
   <Your Script>
END

you can copy and paste your Query between the BEGIN and END . 您可以在BEGINEND之间复制并粘贴您的查询。

Like this 像这样

CREATE PROCEDURE dbo.sProc_MyProc
AS
BEGIN

DECLARE @Body NVARCHAR(MAX),
    @TableHead VARCHAR(1000),
    @TableTail VARCHAR(1000)

SET @TableTail = '</table></body></html>' ;
SET @TableHead = '<html><head>' + '<style>'
    + 'td {border: solid black;border-width: 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font: 11px arial} '
    + '</style>' + '</head>' + '<body>' + 'Report generated on : '
    + CONVERT(VARCHAR(50), GETDATE(), 106) 
    + ' <br> <table cellpadding=0 cellspacing=0 border=0>' 
    + '<tr> <td bgcolor=#E6E6FA><b>StayYear</b></td>'
    + '<td bgcolor=#E6E6FA><b>Market</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jan</b></td>'
    + '<td bgcolor=#E6E6FA><b>Feb</b></td>'
    + '<td bgcolor=#E6E6FA><b>Mar</b></td>'
    + '<td bgcolor=#E6E6FA><b>Apr</b></td>'
    + '<td bgcolor=#E6E6FA><b>May</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jun</b></td>'
    + '<td bgcolor=#E6E6FA><b>Jul</b></td>'
    + '<td bgcolor=#E6E6FA><b>Aug</b></td>'
    + '<td bgcolor=#E6E6FA><b>Sep</b></td>'
    + '<td bgcolor=#E6E6FA><b>Oct</b></td>'
    + '<td bgcolor=#E6E6FA><b>Nov</b></td>'
    + '<td bgcolor=#E6E6FA><b>Dec</b></td>';

SET @Body = ( SELECT *
              FROM  View1               
                FOR   XML RAW('tr'),
                      ELEMENTS
            )


SELECT  @Body = @TableHead + ISNULL(@Body, '') + @TableTail

END
  1. Simply right-click 'Stored Procedures' and click 'Stored Procedure' . 只需右键单击“存储过程” ,然后单击“存储过程”

    在此处输入图片说明

    A new window will open with some very basic code. 一个新的窗口将打开,其中包含一些非常基本的代码。

    在此处输入图片说明

  2. Delete the stuff in green 删除绿色的东西

  3. Name your Stored Procedure, with no spaces in the name of the SProc. 命名您的存储过程,在SProc的名称中不能有空格。

  4. Paste your SQL script in between the BEGIN and END clauses. 将您的SQL脚本粘贴到BEGINEND子句之间。

    在此处输入图片说明

  5. Hit F5 to compile your Sproc. F5编译您的Sproc。

  6. If everything is setup correctly, you will get a message that reads 如果一切设置正确,您将收到一条消息,内容为

    Command(s) completed successfully.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM