2013-04-25 3 views
0

문제점이있는 sybase 저장 프로 시저가 있습니다. 여기저장 프로 시저의 문제

내가 삽입 문을 사용하는 경우 직접 삽입 그림과 같이 완벽하게 작동합니다

[EXEC - 0 row(s), 0.000 secs] [Error Code: 102, SQL State: 42000] Incorrect syntax near ')'. 

exec dbo.sp_loadStudData(113, 'ABCD', 222, 333, 'One', 02, getDate(), getdate(), getdate(), getdate(), getdate(), 999, 11, getdate()) 

I :

insert 
    into dbo.StudentData 
    (studID 
    , studLetters 
    , studCode 
    , studTelecast 
    , studName 
    , monthCode 
    , reportDate 
    , startTime 
    , endTime 
    , startDateTime 
    , endDateTime 
    , cost 
    , duration 
    , creationTime 
    ) 
values 
    (113 
    , 'ABCD' 
    , 222 
    , 333 
    , 'One' 
    , 02 
    , getDate() 
    , getdate() 
    , getdate() 
    , getdate() 
    , getdate() 
    , 999 
    , 11 
    , getdate() 
    ) 
    ; 

그러나 나는 다음과 같은 오류가있어 저장된 프로 시저를 사용하는 경우 문제가 무엇인지 알 수는 없지만 저장된 proc은 오류없이 성공적으로 생성됩니다. 저장된 PROC는 FOLL과 같습니다

create proc dbo.sp_loadStudData 
(
@studID int,     
@studLetters varchar(255), 
@studCode int, 
@studTelecast int, 
@studName varchar(25), 
@monthCode int, 
@reportDate datetime, 
@startTime datetime, 
@endTime datetime, 
@startDateTime datetime, 
@endDateTime datetime, 
@cost int, 
@duration int, 
@creationTime datetime 
) 
as 
begin 
set nocount on 


insert into dbo.StudentData(studID,studLetters,studCode ,studTelecast ,studName ,monthCode,reportDate,startTime,endTime,startDateTime,endDateTime,cost,duration,creationTime) 
values(@studID,@studLetters,@studCode ,@studTelecast ,@studName ,@monthCode,@reportDate,@startTime,@endTime,@startDateTime,@endDateTime,@cost,@duration,@creationTime) 

end 
go 
EXEC sp_procxmode 'dbo.sp_loadStudData', 'unchained' 
go 
IF OBJECT_ID('dbo.sp_loadStudData') IS NOT NULL 
    PRINT '<<< CREATED PROCEDURE dbo.sp_loadStudData >>>' 
ELSE 
    PRINT '<<< FAILED CREATING PROCEDURE dbo.sp_loadStudData >>>' 
go 
GRANT EXECUTE ON dbo.sp_loadStudData TO developers 
go 
GRANT EXECUTE ON dbo.sp_loadStudData TO web_group 
go 
GRANT EXECUTE ON dbo.sp_loadStudData TO crd_group 
go 
GRANT EXECUTE ON dbo.sp_loadStudData TO wd_group 
go 
+0

아마도 '; ..... @ creationTime 후에 insert 문을 실행 한 후); – bAN

+0

그게 마지막 수신 매개 변수이기 때문에 나는 항상 이것을 사용한 것처럼 끝냈다. 나는 사용하지 않았다 ';' 내가 그것을 사용하는 경우에도 프로 시저를 생성하는 동안 오류가 발생합니다. –

+1

'시작 세트'전에?)가 필요합니까? 그리고 저장된 proc 이름 뒤에 여는 것도 필요합니까? 예제는 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/에서보실 수 있습니다. html/sqlug/sqlug668.htm 당신이 그럴 필요가없는 것 같습니다. – Edper

답변

1

나는베이스에 어떤 전문가는 아니지만 그러나 확실하게 SQL 서버에 먼저 변수에 GETDATE() 반환 값을 저장해야합니다.

당신은 캔트 즉

...

EXEC MyProc getdate(), getdate(), getdate() 

하지만

DECLARE @Now DATETIME 
SET @Now = GETDATE() 
EXEC MyProc @Now, @Now, @Now 
1

제거 여기 교정기 수 있으며, 실행

간부 dbo.sp_loadStudData (113), 'ABCD', 222, 333, 'One', 02, getDate(), getdate(), getdate(), getdate(), 999, 11, getdate()