Megosztás a következőn keresztül:


Tárolt eljárás módosítása

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Ez a cikk azt ismerteti, hogyan módosíthatja a tárolt eljárásokat az SQL Server Management Studio vagy a Transact-SQL használatával az SQL Serverben.

Limitations

Transact-SQL tárolt eljárások nem módosíthatók CLR-tárolt eljárásokként, és fordítva.

Ha az előző eljárásdefiníció WITH ENCRYPTION vagy WITH RECOMPILEhasználatával lett létrehozva, ezek a beállítások csak akkor lesznek engedélyezve, ha szerepelnek a ALTER PROCEDURE utasításban.

Permissions

Alter PROCEDURE-engedélyt igényel az eljáráshoz.

Az SQL Server Management Studio használata

Eljárás módosítása az SQL Server Management Studióban:

  1. Az Object Explorerben csatlakozzon az adatbázismotor egy példányához, majd bontsa ki a példányt.

  2. Bontsa ki Adatbázisok, bontsa ki azt az adatbázist, amelyhez az eljárás tartozik, majd bontsa ki Programozhatóság.

  3. Bontsa ki Tárolt eljárások, kattintson a jobb gombbal a módosítani kívánt eljárásra, majd válassza a Módosításlehetőséget.

  4. Módosítsa a tárolt eljárás szövegét.

  5. A szintaxis teszteléséhez a Lekérdezés menüben válassza Elemzéslehetőséget.

  6. Az eljárásdefiníció módosításainak mentéséhez a Lekérdezés menüben válassza a Végrehajtáslehetőséget.

  7. A frissített eljárásdefiníció Transact-SQL szkriptként való mentéséhez a Fájl menüben válassza a Mentés máskéntlehetőséget. Fogadja el a fájlnevet, vagy cserélje le egy új névre, majd válassza a Mentéslehetőséget.

Important

Ellenőrizze az összes felhasználói bemenetet. Az ellenőrzés előtt ne fűzz össze felhasználói adatokat. Soha ne hajtson végre páratlan felhasználói bemenetből létrehozott parancsot. A nem ellenőrzött felhasználói bevitel egy SQL-injektálási támadásnaksebezhetővé teszi az adatbázist. További információért lásd: SQL-injektálás.

Használd a Transact-SQL-t

Eljárás módosítása T-SQL-parancsokkal:

  1. Object Explorer-ben csatlakozzon az adatbázismotor egy példányához, majd bontsa ki a példányt.

  2. Nyissa meg Adatbázisok, majd bontsa ki azt az adatbázist, amelyhez az eljárás tartozik. Vagy az eszköztáron válassza ki az adatbázist az elérhető adatbázisok listájából. Ebben a példában válassza ki a AdventureWorks2025 adatbázist.

  3. A Fájl menüben válassza Új lekérdezéslehetőséget.

  4. Másolja és illessze be a következő példát a lekérdezésszerkesztőbe. A példa létrehozza a Purchasing.uspVendorAllInfo eljárást, amely visszaadja az Adventure Works Cycles adatbázis összes szállítójának nevét, az általuk megadott termékeket, a hitelminősítésüket és a rendelkezésre állásukat.

    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. A Fájl menüben válassza Új lekérdezéslehetőséget.

  6. Másolja és illessze be a következő példát a lekérdezésszerkesztőbe. A példa módosítja a uspVendorAllInfo eljárást. A EXECUTE AS CALLER záradék el lesz távolítva, és az eljárás törzse úgy módosul, hogy csak azokat a szállítókat adja vissza, amelyek a megadott terméket szolgáltatják. A LEFT és CASE függvények testre szabják az eredményhalmaz megjelenését.

    Important

    A meglévő tárolt eljárás elvetése és újrakészítése eltávolítja a tárolt eljáráshoz explicit módon megadott engedélyeket. A ALTER-t használja a meglévő tárolt eljárás módosítására.

    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. Az eljárásdefiníció módosításainak mentéséhez a Lekérdezés menüben válassza a Végrehajtáslehetőséget.

  8. A frissített eljárásdefiníció Transact-SQL szkriptként való mentéséhez a Fájl menüben válassza a Mentés máskéntlehetőséget. Fogadja el a fájlnevet, vagy cserélje le egy új névre, majd válassza a Mentéslehetőséget.

  9. A módosított tárolt eljárás futtatásához hajtsa végre a következő példát.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO