Udostępnij za pośrednictwem


Wykonywanie przechowywanych procedur (aparat bazy danych)

wykonać procedura składowana, użyj Transact-SQL instrukcja wykonać.Alternatywnie można wykonać procedura składowana bez użycia słowa kluczowego wykonywanie, jeśli procedura składowana jest pierwszym instrukcja w partia.

System wykonywania procedur przechowywanych

Procedury przechowywane zaczynają się od znaków systemu sp_.Fizycznie są przechowywane w zasobów bazy danych, ale logicznie pojawiają się w sys schemat każdej bazy systemu i użytkownika w wystąpienie z SQL Server.procedura składowana systemu może być wykonywany z dowolnej bazy danych bez konieczności pełnej jakości Nazwa procedura składowana.Nazwa kwalifikowana nonschema jest nazwę jednej części, takie jak sp_someproc lub nazwę trzech części, takie jak somedb.sp_someproc z drugiej części nazwy schematu nieokreślone.

Zaleca się, że schemat spełniasz wszystkie systemowa procedura składowana nazwy z sys nazwę schematu zapobiega konfliktom nazw.W poniższym przykładzie zademonstrowano wykonywanie zalecaną metodą systemowa procedura składowana.

EXEC sys.sp_who;

W poniższych przykładach pokazano wstecznie zgodne metod wykonywanie procedury składowane w systemie.

Ostrzeżenie

Następujące metody wykonywania procedury składowane w systemie zostaną usunięte w przyszłej wersja SQL Server.Plan do modyfikowania aplikacji, które używają obecnie i unikać stosowania tych metod w nowych prac rozwojowych.

EXEC sp_who;
EXEC master.dbo.sp_who;
EXEC mydatabase..sp_who;
EXEC dbo.sp_who;
EXEC mydatabase.dbo.sp_who;

Dopasowywanie sortowania bazy danych

SQL Server 2008 używa wywołania sortowanie bazy danych podczas porównywania nazwy procedury.Dlatego należy zawsze używać dokładnie przypadek systemu nazw procedury w aplikacji.Na przykład kod zawiedzie, jeżeli wykonywany w kontekście baza danych o przypadek-poufnych sortowanie:

exec SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help 

Użyjsys.system_objects i sys.system_parameters wykazu widoki do wyświetlania dokładnie systemowa procedura składowana nazwy.

Wykonywanie systemu rozszerzonych procedur przechowywanych

System rozszerzonych procedur przechowywanych zaczynają się od znaków xp_.Fizycznie są przechowywane w zasobów bazy danych, ale logicznie pojawiają się w sys schemat każdej bazy systemu i użytkownika w wystąpienie z SQL Server.Poniższy przykład ilustruje zalecanym metoda dla wykonywania system rozszerzona procedura składowana.

EXEC sys.xp_subdirs 'c:\';

Wykonywanie procedur przechowywanych przez użytkownika

Podczas wykonywania przez użytkownika przechowywane procedury (lub w partia wewnątrz modułu, takich jak użytkownika procedura składowana lub funkcja), stanowczo zaleca się kwalifikujących się procedura składowana nazwa z co najmniej nazwę schematu.

Poniższy przykład ilustruje zalecanym metoda procedura składowana, wykonywania przez użytkownika.

USE AdventureWorks2008R2;
GO
EXEC dbo.uspGetEmployeeManagers 50;

- Lub -

EXEC AdventureWorks2008R2.dbo.uspGetEmployeeManagers 50;
GO

Jeśli nonqualified użytkownika procedura składowana jest określony, Aparat baz danych szuka procedury w następującej kolejności:

  • Sys schematu bieżącej bazy danych.

  • Wywołującego domyślnego schematu jeżeli wykonane w partia lub dynamic SQL.Lub jeśli wewnątrz ciała innej definicji procedura zostanie wyświetlona nazwa procedury nonqualified, schematu zawierające procedura ta jest dalej przeszukiwany.Aby uzyskać więcej informacji na temat domyślnych schematów, zobacz Separacji schemacie użytkownika.

  • Dbo schematu w bieżącej bazie danych.

Ważna informacjaWażne:

Jeśli wszystkie procedura składowana utworzone przez użytkownika ma taką samą nazwę jak systemowa procedura składowana, procedura składowana utworzone przez użytkownika nigdy nie zostanie wykonane, jeśli użyć odwołania nonschema kwalifikowaną nazwą.Aby uzyskać więcej informacji, zobacz Tworzenie procedury przechowywane (aparat bazy danych).

Określanie parametrów

Jeśli procedura składowana jest napisany je zaakceptować, może dostarczyć wartości parametrów.

Podana wartość musi być stała lub zmienna; nie można określić nazwę funkcja, jako wartość parametru.Zmienne mogą być zdefiniowane przez użytkownika lub zmienne systemowe, takie jak @@ spid.

W poniższych przykładach pokazano przekazanie wartości parametru do procedura składowana uspGetWhereUsedProductID.Procedura oczekuje wartości dwa parametry wejściowe: Identyfikator produktu oraz data.W przykładach pokazano, jak przekazać parametry jako zmiennych i stałych, a także jak używać zmiennej do przekazania wartości funkcja.

USE AdventureWorks2008R2;
GO
-- Passing values as constants.
EXEC dbo.uspGetWhereUsedProductID 819, '20050225';
GO
-- Passing values as variables.
DECLARE @ProductID int, @CheckDate datetime;
SET @ProductID = 819;
SET @CheckDate = '20050225';
EXEC dbo.uspGetWhereUsedProductID @ProductID, @CheckDate;
GO
-- Try to use a function as a parameter value.
-- This produces an error message.
EXEC dbo.uspGetWhereUsedProductID 819, GETDATE();
GO
-- Passing the function value as a variable.
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
GO

Jeśli chcesz określić parametry w innej kolejności niż zamówienia są zdefiniowane w procedura składowana, muszą im nazwy.Aby uzyskać więcej informacji, zobacz Określanie nazwy parametru.

Aby określić, że parametr powinien zwracać wartość do programu wywołującego, słowo kluczowe dane wyjściowe.Aby uzyskać więcej informacji, zobacz Określanie kierunku parametr.

Określanie kolejności parametrów

If you supply parameters in the form **@parameter =**value, you can supply them in any order.Można również pominąć parametry, dla których dostarczono wartości domyślne.If you supply one parameter in the form **@parameter =**value, you must supply all subsequent parameters this way.If you do not supply parameters in the form **@parameter =**value, you must supply them in the order given in the CREATE PROCEDURE statement.

Podczas wykonywania procedura składowana, serwer odrzuca wszelkie parametry, które nie zostały dołączone do listy parametrów podczas procedury tworzenia.Każdy parametr przekazywany przez odwołanie (przechodzącego jawnie nazwę parametru) nie zostanie zaakceptowany, jeśli nazwa parametru nie pasuje.

Używając wartości domyślne parametrów

Chociaż można pominąć parametry, dla których zostały dostarczone domyślne, można skrócić tylko listę parametrów.For example, if a stored procedure has five parameters, you can omit both the fourth and the fifth parameters, but you cannot skip the fourth and still include the fifth unless you supply parameters in the form **@parameter =**value.

Wartością domyślną parametru, jeśli dla parametru w procedura składowana, jest używany, gdy:

  • Nie określono żadnej wartości dla parametru, podczas wykonywania procedura składowana.

  • Słowo kluczowe domyślny jest określony jako wartość parametru.