读书人

请教这个存储过程语句有关问题出在哪里

发布时间: 2011-12-27 22:22:55 作者: rapoo

请问这个存储过程语句问题出在哪里?
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中间.
注意一下语法就好了,
谢谢先~~~

读书人网 >SQL Server

热点推荐