存储过程上的SQL错误
我不熟悉存储过程,我创建了这个游标,它将在每晚午夜运行,如果它没有中断,将滚动最后几天记录。执行时,我每次都会收到一个错误。我不确定是什么引起的。任何帮助都将不胜感激 Msg 102,15级,状态1,程序nt\U翻车费,第38行 “nt\U游标”附近的语法不正确存储过程上的SQL错误,sql,tsql,stored-procedures,Sql,Tsql,Stored Procedures,我不熟悉存储过程,我创建了这个游标,它将在每晚午夜运行,如果它没有中断,将滚动最后几天记录。执行时,我每次都会收到一个错误。我不确定是什么引起的。任何帮助都将不胜感激 Msg 102,15级,状态1,程序nt\U翻车费,第38行 “nt\U游标”附近的语法不正确 因此,首先,您不应该使用游标,因为这违背了使用SQL和数据库(基于集合的操作)的目的。就这样写下你的陈述: Update Log_book set nt_current_date = 'False' from Log_book inne
因此,首先,您不应该使用游标,因为这违背了使用SQL和数据库(基于集合的操作)的目的。就这样写下你的陈述:
Update Log_book set
nt_current_date = 'False'
from
Log_book inner join
Log_book L2
on L2.log_id = log_book.log_id
where
L2.test_id = '3' and L2.nt_dc_status = 'FALSE';
INSERT INTO log_book(mrn, fin, ref_dr, tech, equip_id, hookup_id, indication, abnormality, location_id, test_id, charged, start_date, nt_rollover_date, nt_dc_status, nt_current_date)
SELECT log_book.mrn, log_book.fin, log_book.ref_dr, log_book.tech, log_book.equip_id, log_book.hookup_id, log_book.indication, log_book.abnormality, log_book.location_id, log_book.test_id, null, log_book.start_date, getdate(), 'FALSE', 'TRUE'
FROM log_book
inner join
Log_book L2
on L2.log_id = log_book.log_id
where
L2.test_id = '3' and L2.nt_dc_status = 'FALSE';
至于您的实际问题,您发布的只有33行,但错误发生在第38行。在存储过程的末尾是否有END语句?
插入日志簿中。。。。(选择
应该是插入日志…选择不带括号的
。看起来这里根本不需要光标。而且,我认为你可以不用光标来完成这项工作…@MartinSmith OP发布的原始TSQL在过程结束时没有结尾
,因此它没有解析并给出上面的错误。Aft呃,你的修订版,END
在那里,代码解析正确(当然执行是不同的)。@Pondlife-啊,谢谢。我没有意识到edit无意中修复了原始问题。
Update Log_book set
nt_current_date = 'False'
from
Log_book inner join
Log_book L2
on L2.log_id = log_book.log_id
where
L2.test_id = '3' and L2.nt_dc_status = 'FALSE';
INSERT INTO log_book(mrn, fin, ref_dr, tech, equip_id, hookup_id, indication, abnormality, location_id, test_id, charged, start_date, nt_rollover_date, nt_dc_status, nt_current_date)
SELECT log_book.mrn, log_book.fin, log_book.ref_dr, log_book.tech, log_book.equip_id, log_book.hookup_id, log_book.indication, log_book.abnormality, log_book.location_id, log_book.test_id, null, log_book.start_date, getdate(), 'FALSE', 'TRUE'
FROM log_book
inner join
Log_book L2
on L2.log_id = log_book.log_id
where
L2.test_id = '3' and L2.nt_dc_status = 'FALSE';