请问这个存储过程语句问题出在哪里?
CREATE PROCEDURE [dbo].[mp_insert]
AS
declare @sYear nchar(4)
declare @sMonth nchar(2)
declare @sDate nchar(7)
delete from table1
set @sMonth=right( '00 ' + convert(nchar(2),month(getdate())),2)
set @sYear=convert(nchar(4),year(getdate()))
set @sDate=@sYear + '/ ' + @sMonth
if @sMonth= '01 '
begin
if exists(select * from table2 where ....)
end
GO
以上语句居然报错:Error156: Incorrent syntax near the keyword 'end '.
请问大家,问题出在哪里了?
[解决办法]
begin
if exists(select * from table2 where ....)
end
最后这块
if判断下面没有语句
begin
if exists(select * from table2 where ....)
.....
end
[解决办法]
CREATE PROCEDURE [dbo].[mp_insert]
AS
declare @sYear nchar(4)
declare @sMonth nchar(2)
declare @sDate nchar(7)
delete from table1
set @sMonth=right( '00 ' + convert(nchar(2),month(getdate())),2)
set @sYear=convert(nchar(4),year(getdate()))
set @sDate=@sYear + '/ ' + @sMonth
if @sMonth= '01 '
begin
if exists(select * from table2 )
print 1--指定
else
print 2
end
[解决办法]
begin
if exists(select * from table2 where ....)
end
在这句的if语句的条件的西面必须要有处理语句,如果没有语句就要报错!
实在不想有处理语句,就象上面人说的用一条print语句或者Rollback transaction语句吧!
多行语句在执行体中必须要在begin...end中间.
注意一下语法就好了,
谢谢先~~~