Oracle基本多语句块

Oracle基本多语句块,oracle,Oracle,在SQL Server中,可以在SSMS中执行多条语句。在Oracle(使用toad)中,我不知道为什么我在做同样的事情时会收到某些错误。例如,我假设Oracle要求将它们放在块中,但我仍然得到以下结果: DECLARE v_datetime TIMESTAMP := SYSDATE; BEGIN insert into sometable_log values (v_datetime, 'this is a test ',1); select * from sometable_lo

在SQL Server中,可以在SSMS中执行多条语句。在Oracle(使用toad)中,我不知道为什么我在做同样的事情时会收到某些错误。例如,我假设Oracle要求将它们放在块中,但我仍然得到以下结果:

DECLARE
  v_datetime TIMESTAMP := SYSDATE;
BEGIN
  insert into sometable_log values (v_datetime, 'this is a test ',1);
  select * from sometable_log where event_dt = v_datetime;
END;
产生:

[错误]执行(5:1):ORA-06550:第4行第1列:PLS-00428:an 此SELECT语句中应包含INTO子句

为什么我需要使用into子句?有人能帮我理解这是什么吗


谢谢大家!

在执行代码块时,Oracle希望select命令具有类似代码的效果。这就是为什么它要你加入into子句


要执行所需操作,只需将select语句移到PL/SQL begin/end块之外。

在PL/SQL中,需要一个
into
子句,以便捕获值以进行进一步处理。如果您想从PL/SQL块隐式地将ref游标返回给调用方,请查看您是否只想在Toad中一个接一个地运行两个命令,而不是在PL/SQL中编写任何代码,然后参考Toad文档(我不使用它)。看起来您并不是真的想要PL/SQL块。说一下运行普通SQL语句时会出现什么错误可能会更有用谢谢你,Mark。如果我这样做,那么它将无法识别v_datetime变量。那么,Oracle不像Sql Server那样批量工作有什么区别呢?PL/SQL和SQLServer的工作方式似乎有着根本的区别,在我看来,PLSQL一次只能以批处理方式处理一条语句。我说得对吗?