저장 프로 시저를 실행할 권한 만있는 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
저장 프로 시저 목표가 INSERT
ID 필드가 선언 된 테이블 에서 수행하는 것이라면이 시나리오에서 필드 @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...