Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle,使用prepared语句在一个查询中更新多行_Sql_Oracle_Sql Update_Prepared Statement - Fatal编程技术网

Sql Oracle,使用prepared语句在一个查询中更新多行

Sql Oracle,使用prepared语句在一个查询中更新多行,sql,oracle,sql-update,prepared-statement,Sql,Oracle,Sql Update,Prepared Statement,我知道您可以使用 INSERT ALL INTO mytable (column1, column2, column_n) VALUES (?,?,?) INTO mytable (column1, column2, column_n) VALUES (?,?,?) INTO mytable (column1, column2, column_n) VALUES (?,?,?) SELECT * FROM dual; 是否也有基于值的更新方法?所以会是这样的 UPDAT

我知道您可以使用

  INSERT ALL
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  SELECT * FROM dual;
是否也有基于值的更新方法?所以会是这样的

  UPDATE ALL
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  WHERE ID= ?
  SELECT * FROM dual;
例如,我有一个复习表

       reviewid      bookid     authorname   authoremail
          1            1           peter        wdwdd
          2            1           jane         dwdwdw
          3            1           mary         dwdw
是否可以在bookid=“1”中执行多重更新?

您可以使用:


我不完全理解你的问题,但也许你只是需要我不明白。您正在尝试将多行更新为相同的值,还是不同的值?是否可以在更新前后添加示例表数据?使用此链接仍不清楚,部分原因是您尚未显示绑定值或表之后的外观。您建议的
updateall
有三组绑定变量,那么它们是什么呢?它似乎假设给定的
bookid
正好有三行,这意味着您希望使用不同的值更新其中的每一行,但它如何知道要为哪一行使用哪些值呢?如果您将它们都设置为相同的值,那么简单的
更新有什么问题?
MERGE INTO reviewtable r
USING ( SELECT 1 AS reviewid,
               1 AS bookid,
               'peter smith' AS name,
               'p.smith@email' AS email
        FROM   DUAL
        UNION ALL
        SELECT 2, 1, 'jane blogs', 'j.blogs@email' FROM DUAL
        UNION ALL
        SELECT 3, 1, 'mary adams', 'm.adams@email' FROM DUAL
      ) src
ON    ( r.bookid = src.bookid AND r.reviewid = src.reviewid )
WHEN MATCHED THEN UPDATE
  SET authorname  = src.name,
      authoremail = src.email;