Heim >Datenbank >MySQL-Tutorial >SQLServer2008助您轻松编写T-SQL存储过程(原创)

SQLServer2008助您轻松编写T-SQL存储过程(原创)

WBOY
WBOYOriginal
2016-06-07 15:39:311382Durchsuche

一、回顾早期的SQLSERVER版本 早在SQL2000时代,查询分析器的功能还很简陋,远不如VS那么强大。到SQL2005时代,代码高亮、SQL优化等功能逐渐加强,但是依然无法调试SQL语句。好一点的第三方的SQL语法编辑器似乎也不够完美,这样导致一些人抱怨 存储 过程 不

  一、回顾早期的SQLSERVER版本

  早在SQL2000时代,查询分析器的功能还很简陋,远不如VS那么强大。到SQL2005时代,代码高亮、SQL优化等功能逐渐加强,但是依然无法调试SQL语句。好一点的第三方的SQL语法编辑器似乎也不够完美,这样导致一些人抱怨存储过程不便于维护,开发的时候能不用则不用。

  二、SQLSERVER2008Express 智能提示加强

  该功能是SQL2008在SQL2005之后的升级版,我们可以很方便的调用智能提示,和 VS一致:使用快捷键ctrl + J 即可。

  截图如下:      SQLServer2008助您轻松编写T-SQL存储过程(原创)

  该功能是否与VS一样了呢? 毕竟他们都是微软的产品。

  三、调试T-SQL语句

   1、Debug普通T-SQL语句

         SQL代码如下:

<p><span>1</span><span>use</span><span> northwind<br></span><span>2</span><span>go</span><span><br></span><span>3</span><span> <br></span><span>4</span><span>declare</span><span>@i</span><span>int</span><span> ,</span><span>@j</span><span>int</span><span>,</span><span>@k</span><span>int</span><span> <br></span><span>5</span><span>set</span><span>@i</span><span>=</span><span>1</span><span>;<br></span><span>6</span><span>set</span><span>@j</span><span>=</span><span>2</span><span>;<br></span><span>7</span><span>set</span><span>@k</span><span>=</span><span>@i</span><span>+</span><span>@j</span><span><br></span><span>8</span><span>select</span><span>@i</span><span>;<br></span><span>9</span><span>go</span></p>

  非常简单的定义了 三个int 型变量:i、j、k并且对这些变量进行简单的逻辑运算,在Management Studio 中只要轻松的按F11键,即可调试以上代码块。

  截图如下:

SQLServer2008助您轻松编写T-SQL存储过程(原创)

  接着点击F11逐语句debug 或者F10逐过程调试代码。

  截图如下:

SQLServer2008助您轻松编写T-SQL存储过程(原创)

  这个dubug的场面您是否觉得已经和VS相差无几了呢?

  四、支持复杂存储过程嵌套debug

   您可能会疑问,在一个庞大的系统中,如果数据库逻辑绝大部分都是存储过程实现的情况下,会出现存储过程嵌套存储过程或者嵌套存储函数这样的代码。

  SQL2008是否支持调试功能呢?答案是肯定的。

  首先定义一个简单的存储过程(本文使用NorthWind数据库)代码如下:

<p><span>1</span><span>CREATE</span><span>procedure</span><span> sp_getOrders<br> </span><span>2</span><span>@orderID</span><span>int</span><span>=</span><span>null</span><span><br> </span><span>3</span><span>as</span><span><br> </span><span>4</span><span>if</span><span> (</span><span>@orderID</span><span>is</span><span>null</span><span> )<br> </span><span>5</span><span>begin</span><span> <br> </span><span>6</span><span>print</span><span>'</span><span>null</span><span>'</span><span><br> </span><span>7</span><span>end</span><span><br> </span><span>8</span><span>else</span><span><br> </span><span>9</span><span>begin</span><span><br></span><span>10</span><span>print</span><span>'</span><span>correct</span><span>'</span><span><br></span><span>11</span><span>end</span><span><br></span><span>12</span><span>select</span><span>*</span><span>from</span><span> Orders </span><span>where</span><span>  OrderID </span><span>=</span><span>@orderID</span><span><br></span><span>13</span><span>go</span></p>

  该存储过程在以下批处理内被调用,代码如下:

<p><span>1</span><span>declare</span><span>@i</span><span>int</span><span> ,</span><span>@j</span><span>int</span><span>,</span><span>@k</span><span>int</span><span> <br></span><span>2</span><span>set</span><span>@i</span><span>=</span><span>1</span><span>;<br></span><span>3</span><span>set</span><span>@j</span><span>=</span><span>2</span><span>;<br></span><span>4</span><span>select</span><span>@k</span><span>=</span><span>@i</span><span>+</span><span>@j</span><span><br></span><span>5</span><span>exec</span><span> sp_getOrders </span><span>10248</span><span><br></span><span>6</span><span>select</span><span>@i</span><span>;<br></span><span>7</span><span>go</span></p>

  F11对以上代码进行SQL Debug。

  截图如下:

SQLServer2008助您轻松编写T-SQL存储过程(原创)

  当断点经过exec sp_getOrders 10248 这段代码时,点击F11进入sp_getOrders存储过程进行逐语句debug。

  截图如下:

SQLServer2008助您轻松编写T-SQL存储过程(原创)

  这样可以在嵌套的存储过程或函数内进行debug了,此刻不得不承认: 升级后的SQL2008越来越强大。您还恐惧使用或者调试存储过程么?

  五、小结

   附上SQLSERVERExpress2008官方下载地址,该版本依然不支持Agent,如果想自动备份数据库请阅我的这篇文章。

  最后希望本篇文章可以给您带来帮助,如有不足之处欢迎指出,谢谢!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn