{"id":634,"date":"2017-09-19T23:30:34","date_gmt":"2017-09-19T23:30:34","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=634"},"modified":"2020-07-17T15:56:28","modified_gmt":"2020-07-17T15:56:28","slug":"procedimientos-almacenados-con-parametros-de-salida","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=634","title":{"rendered":"Procedimientos Almacenados con par\u00e1metros de salida"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"276\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_SPParametrosSalida_D.png\" alt=\"\" class=\"wp-image-952\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Procedimientos Almacenados con par\u00e1metros de salida<\/strong><\/h1>\n\n\n\n<p>Los procedimientos almacenados son bloques de c\u00f3digo reutilizable guardados&nbsp;en la base de datos que tienen un prop\u00f3sito. (<a href=\"http:\/\/www.manualsqlserver.com\/?p=314\">Ver Procedimientos Almacenados<\/a>)<\/p>\n\n\n\n<p>Existen procedimientos almacenados que no tienen par\u00e1metros, es decir, no necesitan&nbsp;de ning\u00fan valor para que se ejecuten, las tareas que realizan estos generalmente son sencillas.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Par\u00e1metros<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Los par\u00e1metros se usan para intercambiar datos entre las aplicaciones y los procedimientos almacenados o la herramienta que ejecut\u00f3 el procedimiento almacenado.<\/li><li>Los par\u00e1metros de entrada permiten pasar un valor de datos al procedimiento almacenado.<\/li><li>Los par\u00e1metros de salida permiten al procedimiento almacenado devolver un valor<\/li><li>Los procedimientos almacenados devuelven un c\u00f3digo de retorno de tipo entero.<\/li><li>El valor de retorno por defecto es CERO si no se establece expl\u00edcitamente un valor diferente<\/li><\/ul>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplos<\/h3>\n\n\n\n<p>Los siguientes ejemplos muestran como usar los par\u00e1metros de salida en procedimientos almacenados.<\/p>\n\n\n\n<p><strong>Usando Northwind<\/strong><br>use Northwind<br>go<\/p>\n\n\n\n<p><strong>Ejercicio 1<\/strong><br><strong>Procedimiento almacenado que reporta el n\u00famero de productos de una determinada categor\u00eda<\/strong><\/p>\n\n\n\n<p>Create procedure spCategoriasCantidadProductos<br>(@CategoriaCodigo int, @CantidadProductos Numeric(9,2) output)<br>As<br>Select * from Products where CategoryID = @CategoriaCodigo<br>Set @CantidadProductos = @@ROWCOUNT<br>go<\/p>\n\n\n\n<p>Para ejecutar el procedimiento debemos crear antes una variable que permita capturar el valor devuelto por el par\u00e1metro de salida del procedimiento. Tomaremos como ejemplo la categor\u00eda 3.<\/p>\n\n\n\n<p>Declare @Cantidad int<br>Execute spCategoriasCantidadProductos 3, @Cantidad output<br>select @Cantidad<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_01-1024x440.png\" alt=\"\" class=\"wp-image-953\" width=\"823\" height=\"353\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_01-1024x440.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_01-300x129.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_01-768x330.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_01.png 1256w\" sizes=\"auto, (max-width: 823px) 100vw, 823px\" \/><\/figure>\n\n\n\n<p><strong>Ejercicio 2<\/strong><br><strong>Procedimiento almacenado que reporta la cantidad de productos que es necesario comprar&nbsp;con urgencia. (Productos cuyas Unidades en Stock es menor a las unidades en Orden)<\/strong><\/p>\n\n\n\n<p>Create procedure spCantidadProductosComprarUrgente<br>(@CantidadProductos Numeric(9,2) output)<br>As<br>Select * from Products where UnitsOnOrder &gt; UnitsInStock<br>Set @CantidadProductos = @@ROWCOUNT<br>go<\/p>\n\n\n\n<p>Para ejecutar el procedimiento debemos crear antes una variable que permita capturar el<br>valor devuelto por el par\u00e1metro de salida del procedimiento.<\/p>\n\n\n\n<p>Declare @CantidadPorComprar int<br>Execute spCantidadProductosComprarUrgente @CantidadPorComprar output<br>select @CantidadPorComprar<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_02-1024x448.png\" alt=\"\" class=\"wp-image-954\" width=\"884\" height=\"387\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_02-1024x448.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_02-300x131.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_02-768x336.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2017\/09\/ManualSQL_SPParametrosSalida_02.png 1248w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\" \/><\/figure>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-635\" src=\"http:\/\/www.manualsqlserver.com\/wp-content\/uploads\/2017\/08\/ManualSQL_SPParametrosSalida_02-300x131.png\" alt=\"\" width=\"607\" height=\"265\"><br><script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script><br><ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-8212748961777604\" data-ad-slot=\"1807313726\"><\/ins><br><script><br \/>\n     (adsbygoogle = window.adsbygoogle || []).push({});<br \/>\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Procedimientos Almacenados con par\u00e1metros de salida Los procedimientos almacenados son bloques de c\u00f3digo reutilizable guardados&nbsp;en la base de datos que tienen un prop\u00f3sito. (Ver Procedimientos Almacenados) Existen procedimientos almacenados que no tienen par\u00e1metros, es decir, no necesitan&nbsp;de ning\u00fan valor para que se ejecuten, las tareas que realizan estos generalmente son sencillas.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=634\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":952,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,233,8,9],"tags":[18,44,45,51],"class_list":["post-634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultasdedatos","category-sp","category-programacion","category-registros-vistas","tag-create-procedure","tag-output","tag-parametro","tag-select","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=634"}],"version-history":[{"count":3,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions\/978"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/952"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}