oracle 在prepare-execute中的默认值列后插入值

yebdmbv4  于 2023-04-05  发布在  Oracle
关注(0)|答案(1)|浏览(128)

我有一个表,我正在使用prepareexecute语句插入值。

$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);
}

如上所述,我对date列使用默认的trunc(SYSDATE)。我需要通过execute语句传递其他3列的值。
我不确定如何使用execute将值传递给默认date列之后的region

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

上面的语句可以工作吗?或者有没有任何一种占位符可以在execute中用于date(类似于下面的内容)?

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

kq0g1dla1#

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

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

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

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

相关问题