Compartir a través de


Modificar un procedimiento almacenado

En este tema se describe cómo modificar un procedimiento almacenado SQL Server 2012 mediante SQL Server Management Studio o Transact-SQL.

  • Antes de empezar:  Limitaciones y restricciones, Seguridad

  • Para modificar un procedimiento con  SQL Server Management Studio, Transact-SQL

Antes de empezar

Limitaciones y restricciones

[Arriba]

Los procedimientos almacenados de Transact-SQL no se pueden modificar para que sean procedimientos almacenados CLR y viceversa.

Si anteriormente se creó la definición de procedimiento mediante WITH ENCRYPTION o WITH RECOMPILE, estas opciones solo se habilitan si se incluyen en la instrucción ALTER PROCEDURE.

Seguridad

Permisos

[Arriba]

Es necesario el permiso ALTER PROCEDURE en el procedimiento.

Cómo modificar un procedimiento almacenado

Puede usar cualquiera de los siguientes medios:

  • SQL Server Management Studio

  • Transact-SQL

Usar SQL Server Management Studio

Para modificar un procedimiento en Management Studio

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.

  2. Expanda Bases de datos, expanda la base de datos a la que pertenece el procedimiento y, por último, expanda Programación.

  3. Expanda Procedimientos almacenados, haga clic con el botón secundario en el procedimiento que desea modificar y, a continuación, haga clic en Modificar.

  4. Modifique el texto del procedimiento almacenado.

  5. Para probar la sintaxis, en el menú Consulta, haga clic en Analizar.

  6. Para guardar las modificaciones en la definición de procedimiento, en el menú Consulta, haga clic en Ejecutar.

  7. Para guardar la definición de procedimiento actualizada como un script de Transact-SQL, en el menú Archivo, haga clic en Guardar como. Acepte el nombre de archivo o reemplácelo por un nombre nuevo y, a continuación, haga clic en Guardar.

Nota de seguridadNota de seguridad

Valide toda entrada de usuario. No concatene ninguna entrada de usuario antes de que se valide. No ejecute nunca un comando creado a partir de una entrada de usuario no validada.

Usar Transact-SQL

Para modificar un procedimiento en el Editor de consultas

  1. En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y expándala.

  2. Expanda Bases de datos, expanda la base de datos a la que pertenece el procedimiento. O bien, en la barra de herramientas, seleccione la base de datos en la lista de bases de datos disponibles. En este ejemplo, seleccione la base de datos AdventureWorks2012 .

  3. En el menú Archivo, haga clic en Nueva consulta.

  4. Copie y pegue el ejemplo siguiente en el editor de consultas. El ejemplo crea el procedimiento uspVendorAllInfo, que devuelve los nombres de todos los proveedores en la base de datos Adventure Works Cycles, los productos que suministran, su solvencia y su disponibilidad.

    USE AdventureWorks2012;
    GO
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL 
        DROP PROCEDURE Purchasing.uspVendorAllInfo;
    GO
    CREATE PROCEDURE Purchasing.uspVendorAllInfo
    WITH EXECUTE AS CALLER
    AS
        SET NOCOUNT ON;
        SELECT v.Name AS Vendor, p.Name AS 'Product name', 
          v.CreditRating AS 'Rating', 
          v.ActiveFlag AS Availability
        FROM Purchasing.Vendor v 
        INNER JOIN Purchasing.ProductVendor pv
          ON v.BusinessEntityID = pv.BusinessEntityID 
        INNER JOIN Production.Product p
          ON pv.ProductID = p.ProductID 
        ORDER BY v.Name ASC;
    GO
    
  5. En el menú Archivo, haga clic en Nueva consulta.

  6. Copie y pegue el ejemplo siguiente en el editor de consultas. El ejemplo modifica el procedimiento uspVendorAllInfo. La cláusula EXECUTE AS CALLER se quita y el cuerpo del procedimiento se modifica para devolver solo los proveedores que proporcionan el producto especificado. Las funciones LEFT y CASE permiten personalizar la apariencia del conjunto de resultados.

    USE AdventureWorks2012;
    GO
    ALTER PROCEDURE Purchasing.uspVendorAllInfo
        @Product varchar(25) 
    AS
        SET NOCOUNT ON;
        SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name', 
        'Rating' = CASE v.CreditRating 
            WHEN 1 THEN 'Superior'
            WHEN 2 THEN 'Excellent'
            WHEN 3 THEN 'Above average'
            WHEN 4 THEN 'Average'
            WHEN 5 THEN 'Below average'
            ELSE 'No rating'
            END
        , Availability = CASE v.ActiveFlag
            WHEN 1 THEN 'Yes'
            ELSE 'No'
            END
        FROM Purchasing.Vendor AS v 
        INNER JOIN Purchasing.ProductVendor AS pv
          ON v.BusinessEntityID = pv.BusinessEntityID 
        INNER JOIN Production.Product AS p 
          ON pv.ProductID = p.ProductID 
        WHERE p.Name LIKE @Product
        ORDER BY v.Name ASC;
    GO
    
  7. Para guardar las modificaciones en la definición de procedimiento, en el menú Consulta, haga clic en Ejecutar.

  8. Para guardar la definición de procedimiento actualizada como un script de Transact-SQL, en el menú Archivo, haga clic en Guardar como. Acepte el nombre de archivo o reemplácelo por un nombre nuevo y, a continuación, haga clic en Guardar.

  9. Para ejecutar el procedimiento almacenado modificado, ejecute el siguiente ejemplo.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';
    GO
    

[Arriba]

Vea también

Referencia

ALTER PROCEDURE (Transact-SQL)