[sql-server] SQL Developer에서 SQL Server 저장 프로 시저를 실행하는 방법은 무엇입니까?

저장 프로 시저를 실행할 권한 만있는 SQL Server 데이터베이스에 대한 사용자 계정이 부여되었습니다. JTDS SQL Server JDBC jar 파일을 SQL Developer에 추가하고 타사 JDBC 드라이버로 추가했습니다. SQL Server 데이터베이스에 성공적으로 로그인 할 수 있습니다. 나는 절차를 실행하기 위해이 구문을 받았다 :

EXEC proc_name 'paramValue1' 'paramValue2'

이것을 문장이나 스크립트로 실행하면 다음 오류가 발생합니다.

Error starting at line 1 in command:
EXEC proc_name 'paramValue1' 'paramValue2'
Error report:
Incorrect syntax near the keyword 'BEGIN'.

문을 줄 바꿈 BEGIN/END했지만 동일한 오류가 발생합니다. SQL Developer에서 프로 시저를 호출 할 수 있습니까? 그렇다면 어떤 구문을 사용해야합니까?



답변

EXEC 절이 필요하지 않습니다. 간단히 사용

proc_name paramValue1, paramValue2

(그리고 Misnomer가 언급 한대로 쉼표가 필요합니다)


답변

너는 그리워하고있다 ,

EXEC proc_name 'paramValue1','paramValue2'


답변

이 작업을 수행해야합니다.

    exec procName
    @parameter_1_Name = 'parameter_1_Value',
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'


답변

    EXECUTE [or EXEC] procedure_name
  @parameter_1_Name = 'parameter_1_Value',
    @parameter_2_name = 'parameter_2_value',
    @parameter_z_name = 'parameter_z_value'


답변

EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text';
GO

저장 프로 시저 목표가 INSERTID 필드가 선언 된 테이블 에서 수행하는 것이라면이 시나리오에서 필드 @paramValue1가 선언되고 자동 증가하므로 0을 전달해야합니다.


답변

나는 이것이 오래된 것이라는 것을 안다. 그러나 이것은 다른 사람들을 도울 수 있습니다.

BEGIN / END 사이에 SP 호출 기능을 추가했습니다. 작동하는 스크립트는 다음과 같습니다.

ALTER Proc [dbo].[DepartmentAddOrEdit]
@Id int,
@Code varchar(100),
@Name varchar(100),
@IsActive bit ,
@LocationId int,
@CreatedBy int,
@UpdatedBy int
AS
    IF(@Id = 0)

    BEGIN
    INSERT INTO Department (Code,Name,IsActive,LocationId,CreatedBy,UpdatedBy,CreatedAt)
        VALUES(@Code,@Name,@IsActive,@LocationId,@CreatedBy,@UpdatedBy,CURRENT_TIMESTAMP)

    EXEC dbo.LogAdd @CreatedBy,'DEPARTMENT',@Name
    END

    ELSE

    UPDATE Department SET
        Code = @Code,
        Name = @Name,
        IsActive = @IsActive,
        LocationId = @LocationId,
        CreatedBy = @CreatedBy,
        UpdatedBy = @UpdatedBy,
        UpdatedAt =  CURRENT_TIMESTAMP
    where Id = @Id 


답변

저장 프로 시저 proc_name 'paramValue1' , 'paramValue2'...
를 동시에 취소해야하는 경우
하나의 선택 쿼리 및 저장 프로 시저와 같이 둘 이상의 쿼리를 실행하는 경우 추가해야합니다.
select * from tableName
EXEC proc_name paramValue1 , paramValue2...