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


148

저장 프로 시저를 실행할 권한 만있는 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에서 프로 시저를 호출 할 수 있습니까? 그렇다면 어떤 구문을 사용해야합니까?

답변:


231

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

proc_name paramValue1, paramValue2

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


8
이 규칙에 예외가 있습니까? " 'sp_dev_mystoredproc'근처의 구문이 잘못되었습니다."오류가 발생하는 것 같습니다. 이 구문으로 실행할 때.
nuzzolilo

2
내 경우에는 EXEC 이전 proc_name이 필요합니다
César León

3
@MuriloKunze가 제안한 링크를 방문하는 것이 좋습니다. 알아야 할 매우 중요합니다.
RBT

@RBT 누가 링크를합니까?
CervEd

72

너는 그리워하고있다 ,

EXEC proc_name 'paramValue1','paramValue2'

1
누락 된 쉼표를 추가했지만 여전히 동일한 오류가 발생합니다.
sdoca

varchar 인 경우 매개 변수는 무엇입니까? 만 따옴표가 필요합니다. 그 외에는 아무것도 생각할 수 없습니다 ...이 작업은 새 창에서만 실행하고 시도 할 수 EXEC proc_name있습니다. 두 번째 매개 변수는 ... 당신이 알고 적어도 당신의 sytax이 right..if 나던 작업 수단 당신에게 probanly 해달라고 바로 저장 한 시저의 이름은 ... 전체 수식 명을 시도 ..
이씨

두 번째 매개 변수를 제거했지만 여전히 동일한 오류가 발생했습니다. 나는 그것이 절차를 전혀 실행하고 있다고 생각하지 않습니다. EXEC 명령은 구문으로 강조 표시되지 않으므로 SQL Server 데이터베이스에 연결되어 있어도 Developer가 인식하지 못하는 것 같습니다. 그러나 나는 웹에서 그것을 확인 / 거부하는 것을 찾을 수 없습니다.
sdoca

Yea..try 일부 레코드를 선택하고 간단한 명령을 실행 볼 모든 작품에서 아무것도 .. 행운을 빕니다 .. 만약!
이씨

불행히도, 내 사용자는 저장 프로 시저를 실행할 권한 만 가지고 있습니다.
sdoca

18

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

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

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

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

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


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 

-3

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


-8

저장 프로시 저는 아래 구문을 사용하여 SQL 개발자 도구에서 실행할 수 있습니다.

BEGIN 프로 시저 이름 (); 종료;

매개 변수가 있으면 전달해야합니다.


명령문 블록으로 단일 명령문을 묶는 이유는 무엇입니까? 일련의 T-SQL 문에 대해서만 수행해야합니다 .
David Ferenczy Rogožan

-11
Select * from Table name ..i.e(are you save table name in sql(TEST) k.

Select * from TEST then you will execute your project.

1
stackoverflow에 오신 것을 환영합니다. 가지고 이 사이트가 작동하고 무엇을 위해 어떻게 알게 투어. 당신의 대답은 무엇인가?
Devraj Gadhavi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.