代码之家  ›  专栏  ›  技术社区  ›  Fazlin

在准备执行中的默认值列后插入值

  •  0
  • Fazlin  · 技术社区  · 3 年前

    我有一个表,在其中我使用 prepare execute 声明。

    $sql = <<"END_SQL";
    BEGIN
    INSERT INTO my_table (name, id, date, region) VALUES (?,?,trunc(SYSDATE),?);
    EXCEPTION WHEN dup_val_on_index THEN null;
    END;
    END_SQL
    
    if (!($sth = $dbh->prepare ($sql))) {
      die("Failed to prepare: " . DBI->errstr);
    }
    

    如上所述,我使用默认 trunc(SYSDATE) 对于 date 柱不过,我需要传递其他3列的值 处决 陈述

    我不知道如何将值传递给 region 违约后 日期 列使用 处决

    $sth->execute($PNAME,$ID,$REGION);
    

    上述声明有效吗?或者有什么占位符我可以用在 处决 对于 日期 (如下所示)?

    $sth->execute($PNAME,$ID,,$REGION);
    
    0 回复  |  直到 3 年前
        1
  •  3
  •   MT0    3 年前

    绑定变量正在绑定到 ? 占位符。它们在语句中的位置或语句中绑定变量之间的位置都无关紧要。

    • 第一个变量绑定到第一个 ?
    • 第二个变量绑定到 ?
    • 第三个变量绑定到第三个 ?

    Perl代码不需要知道 INSERT 声明,它只需要知道有多少 ? s(匿名绑定变量),并为每个变量提供一个值。

    $sth->execute($PNAME,$ID,$REGION);