SQL 서버에 저장되는 절차와 매개 변수를

의:그렉 Robidoux
개요

의 진정한 힘은 저장 프로시저를 전달하는 기능 매개 변수가 저장된 절차를 처리 다른 것을 요청합니다. Thistopic 에서는 매개 변수 값을 저장 프로 시저로 전달하는 것을 살펴볼 것입니다.

설명

좋아하는 능력을 매개 변수를 사용하여 SQL 할 수 있는 코드 alsosetup 저장된 절차를 받아들이 하나 이상 매개 변수의 값입니다. Allexamples 는 adventureworks 데이터베이스를 사용합니다.,

생성 SQL 저장 프로시저를 매개 변수를

  1. 를 만드는 저장 프로시저를 사용하여 매개 변수는 구문은 다음과 같습니다.
  2. 생성 절차 dbo.uspGetAddress@시 이며(30)으로
  3. 정 및 예 아래

SQL 서버는 쿼리를 차례로 저장된 절차

아래의 쿼리가 우리가 사용하려면 저장 프로시저를 만들.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

아이디어를 만들고 저장 프로시저는 도시가 전달로 저장된 절차도록 만들 수 있는 동적 결과입니다., 이것은 다음과 같이 수행 될 수있다변수. 아래 코드를 실행하면 NewYork 에 대한 결과 만 반환됩니다.

USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO

리 이 방법을 사용하고 계속 업데이트@시 변수가 있지만,isa 더 나은 방법을 이렇게 만들어 저장되는 절차입니다.

하나의 매개 변수로 SQL Server 저장 프로 시저 만들기

이 예에서는 사람을 쿼리합니다.AdventureWorksdatabase 의 주소 테이블이지만 모든 레코드를 다시 가져 오는 대신 세부 사항으로 제한 할 것입니다., 이 예제는 도시 값에 정확한 일치가있을 것이라고 가정합니다.전달됩니다.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO

전화를 이 저장 프로시저 우리는 그것을 실행하는 다음과 같다:

EXEC dbo.uspGetAddress @City = 'New York'

삭제하고 저장 프로시저

을 만든 경우에 저장 프로시저를 원하시면 저장 프로시저 가진,같은 이름 을 사용하여 삭제할 수 있습니 followingbefore 을 만들려고 그것을 다시합니다.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

을 만들려고 하는 경우에 저장된 절차와 이미 존재한 당신은 오류 메시지가 표시됩니다.,

Msg2714,레벨 16,상태 3,프로 시저 uspGetAddress,라인 1
데이터베이스에’uspGetAddress’라는 객체가 이미 있습니다.

SQL 서버에 저장되는 절차와 매개 변수를 사용하는 와일드카드

우리는 또한 같은 일이지만,사용자가 허용을 우리에게는 시작을 가리켜서 검색이다.

여기서”=”를 LIKE 로 변경하고”%”와일드 카드를 사용할 수 있습니다.

이것은 새로운 것으로 시작하는 모든 도시를 찾기 위해 다음과 같이 실행할 수 있습니다.,

EXEC dbo.uspGetAddress @City = 'New'

SQL 서버에 저장된 절차에 오류가할 때 매개 변수는 전달되지 않

모두에 진행 예정 매개 변수 값이 alwaysbe 전달됩니다. 는 경우에 당신을 실행하려고 절차 없이 전달해야 합 당신을 얻을 것 같은 오류 메시지가 다음과 같다:

EXEC dbo.uspGetAddress
Msg201,수 16,상태 4,절차 uspGetAddress,Line0
프로시저 또는 기능’uspGetAddress’예상 매개 변수는’@’도시,아침을 이길 시작 느낌,작은 아 제공되지 않습니다.,

SQL 서버에 저장된 절차를 사용하는 NULL 을 기본 매개 변수

대부분의 경우에는 것이 좋습니다 항상에 모든 매개 변수 값을,하지만 때로는 그것이 가능하지 않습니다. 따라서이 예제에서는 NULL 옵션을 사용합니다.매개 변수 값을 전달하지 않도록 허용합니다. 이 storedprocedure 를 그대로 만들고 실행하면 NULL 과 동일한 Cityvalues 를 찾고 있기 때문에 어떤 데이터도 반환하지 않습니다.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO

다음을 실행하면 작동하지만 데이터가 반환되지 않습니다.,

EXEC dbo.uspGetAddress

할 수 있는 우리를 변경이 저장된 절차 및 ISNULL 함수를 사용하여 얻 aroundthis. 따라서 값이 전달되면 값을 사용하여 결과 집합을 좁히고 값이 전달되지 않으면 모든 레코드를 반환합니다. (참고:도시 열에 NULL 값이있는 경우이 값에는 이러한 값이 포함되지 않습니다. City 에 대한 추가 로직은 NULL 입니다)

이제 아래 명령을 실행하면 모든 데이터가 테이블에서 반환됩니다.,

EXEC dbo.uspGetAddress

Create SQL 서버에 저장된 절차와 여러 매개변수

설정하는 여러 매개변수가 매우 쉽게 할 수 있습니다. 아래 그림과 같이 각 매개 변수와 쉼표로 구분 된 데이터 유형을 나열하기 만하면됩니다.

이를 실행하려면 다음 중 하나를 수행 할 수 있습니다.

마지막 업데이트:4/3/2020

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다