복붙노트

[SQL] SQL 서버에서 다른 저장 프로 시저 저장 프로 시저를 실행

SQL

SQL 서버에서 다른 저장 프로 시저 저장 프로 시저를 실행

어떻게 내가 SQL 서버에서 다른 저장 프로 시저 저장 프로 시저를 실행할 수 있습니까? 어떻게 두 번째 프로 시저의 매개 변수를 전달합니다.?

해결법

  1. ==============================

    1.당신은 단지 두 번째 SP에 의해 일부 특정 작업을 수행 할 다시 SP의 값이 필요하지 않은 경우 간단하게 수행

    당신은 단지 두 번째 SP에 의해 일부 특정 작업을 수행 할 다시 SP의 값이 필요하지 않은 경우 간단하게 수행

    Exec secondSPName  @anyparams
    

    당신이 당신의 첫 번째 안에 두 번째 SP에 의해 반환 된 값을 필요로하는 경우 다른, 다음 컬럼의 동일한 숫자와 두 번째 SP에 의해 열 반환의 동일한 정의와 임시 테이블 변수를 만들 수 있습니다. 그런 다음 먼저 SP로에서이 값을 얻을 수 있습니다 :

    Insert into @tep_table
    Exec secondSPName @anyparams
    

    최신 정보:

    두 번째 SP에 매개 변수를 전달하려면 다음을 수행하십시오

    Declare @id ID_Column_datatype 
    Set @id=(Select id from table_1 Where yourconditions)
    
    Exec secondSPName @id
    

    업데이트 2 :

    ID의 타입이 int이며 이름은 VARCHAR (64) 유형이고 두 번째 SP 반환 ID와 이름을 가정하자.

    먼저 SP에서이 값을 선택하려면 지금, 다음에 임시 테이블 변수와 삽입 값을 만듭니다

    Declare @tep_table table
    (
      Id int,
      Name varchar(64)
    )
    Insert into @tep_table
    Exec secondSP
    
    Select * From @tep_table
    

    이렇게하면 두 번째 SP에 의해 반환 된 값을 반환합니다.

    희망이 분명 모든 의심.

  2. ==============================

    2.이 같은 하나 개의 저장 프로 시저가 있다고 가정

    이 같은 하나 개의 저장 프로 시저가 있다고 가정

    먼저 저장 프로 시저 :

    Create  PROCEDURE LoginId
         @UserName nvarchar(200),
         @Password nvarchar(200)
    AS
    BEGIN
        DECLARE  @loginID  int
    
        SELECT @loginID = LoginId 
        FROM UserLogin 
        WHERE UserName = @UserName AND Password = @Password
    
        return @loginID
    END
    

    지금 당신은 다음과 같은 다른 저장 프로 시저에서이 프로 시저를 호출 할

    두 번째 저장 프로 시저

    Create  PROCEDURE Emprecord
             @UserName nvarchar(200),
             @Password nvarchar(200),
             @Email nvarchar(200),
             @IsAdmin bit,
             @EmpName nvarchar(200),
             @EmpLastName nvarchar(200),
             @EmpAddress nvarchar(200),
             @EmpContactNo nvarchar(150),
             @EmpCompanyName nvarchar(200)
    
        AS
        BEGIN
            INSERT INTO UserLogin VALUES(@UserName,@Password,@Email,@IsAdmin)
    
            DECLARE @EmpLoginid int
    
            **exec @EmpLoginid= LoginId @UserName,@Password**
    
            INSERT INTO tblEmployee VALUES(@EmpName,@EmpLastName,@EmpAddress,@EmpContactNo,@EmpCompanyName,@EmpLoginid)
        END
    

    위에서 볼 수 있듯이, 우리는 서로 한 저장 프로 시저를 호출 할 수 있습니다

  3. ==============================

    3.예,이 같은 것을 할 수 있습니다 :

    예,이 같은 것을 할 수 있습니다 :

    BEGIN
       DECLARE @Results TABLE (Tid INT PRIMARY KEY);
    
       INSERT @Results
    
       EXEC Procedure2 [parameters];
       SET @total 1;
    
    END
    SELECT @total
    
  4. ==============================

    4.당신은 교대 저장 프로 시저에서 사용자 정의 함수를 호출 할 수 있습니다

    당신은 교대 저장 프로 시저에서 사용자 정의 함수를 호출 할 수 있습니다

    이 저장 프로 시저를 호출에 문제를 해결할 수 있습니다

  5. ==============================

    5.귀하의 sp_test : 리턴 전체 이름

    귀하의 sp_test : 리턴 전체 이름

    USE [MY_DB]
    GO
    
    IF (OBJECT_ID('[dbo].[sp_test]', 'P') IS NOT NULL)
    DROP PROCEDURE [dbo].sp_test;
    GO
    
    CREATE PROCEDURE [dbo].sp_test 
    @name VARCHAR(20),
    @last_name VARCHAR(30),
    @full_name VARCHAR(50) OUTPUT
    AS
    
    SET @full_name = @name + @last_name;
    
    GO
    

    당신의 sp_main에서

    ...
    DECLARE @my_name VARCHAR(20);
    DECLARE @my_last_name VARCHAR(30);
    DECLARE @my_full_name VARCHAR(50);
    ...
    
    EXEC sp_test @my_name, @my_last_name, @my_full_name OUTPUT;
    ...
    
  6. ==============================

    6.예 , 우리가 저장 프로 시저 내부의 함수를 호출하는 방법에 그것은 간단합니다.

    예 , 우리가 저장 프로 시저 내부의 함수를 호출하는 방법에 그것은 간단합니다.

    에 대한 예를 들어, 사용자가 선택 쿼리에서 나이 기능과 사용을 정의 만들 수 있습니다.

    select dbo.GetRegAge(R.DateOfBirth, r.RegistrationDate) as Age,R.DateOfBirth,r.RegistrationDate from T_Registration R
    
  7. ==============================

    7.절차 예 :

    절차 예 :

    Create  PROCEDURE SP_Name
         @UserName nvarchar(200),
         @Password nvarchar(200)
    AS
    BEGIN
        DECLARE  @loginID  int
    
        --Statements for this Store Proc
      --
      -- 
      --
    
      --execute second store procedure
      --below line calling sencond Store Procedure Exec is used for execute Store Procedure.
        **Exec SP_Name_2 @params** (if any) 
    
    
    END
    
  8. from https://stackoverflow.com/questions/15802511/execute-a-stored-procedure-in-another-stored-procedure-in-sql-server by cc-by-sa and MIT license