我有一个存在问题的sybase存储过程。
这里如果我直接使用insert语句,插入工作就完美了 如图所示:
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()
)
;
但如果我使用存储过程,我会收到以下错误:
[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() )
我无法找出问题所在,但存储过程已成功创建,没有任何错误。 存储的Proc如下:
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 :(得分:1)
我不是Sybase的专家,但在SQL Server中,您需要先将getdate()返回值存储在变量中。
即。你不能......
EXEC MyProc getdate(), getdate(), getdate()
但你可以
DECLARE @Now DATETIME
SET @Now = GETDATE()
EXEC MyProc @Now, @Now, @Now
答案 1 :(得分:1)
在此处移除大括号并运行
exec dbo.sp_loadStudData 113,'ABCD',222,333,'One',02,getDate(),getdate(),getdate(),getdate(),999,11,getdate()