【发布时间】:2015-08-07 13:50:09
【问题描述】:
我正在尝试为插入 SQL 编写准备语句,它有很多行要一次插入。所以当前的准备语句如下所示,
my $sth = $dbh->prepare("INSERT INTO queues_details (id,keyword,data,flags) VALUES
(?,'penaltymemberslimit','0','0'),
(?,'answered_elsewhere','0','0'),
(?,'timeoutpriority','app','0'),
(?,'timeoutrestart','no','0'),
(?,'memberdelay','0','0'),
(?,'servicelevel','60','0'),
(?,'reportholdtime','no','0'),
(?,'ringinuse','yes','0'),
(?,'weight','0','0'),
(?,'autofill','no','0'),
(?,'eventmemberstatus','no','0'),
(?,'eventwhencalled','no','0'),
(?,'monitor-join','yes','0'),
(?,'monitor-format','','0'),
(?,'periodic-announce-frequency','0','0'),
(?,'queue-thankyou','queue-thankyou','0'),
(?,'queue-callswaiting','queue-callswaiting','0'),
(?,'queue-thereare','queue-thereare','0'),
(?,'maxlen','0','0'),
(?,'joinempty','yes','0'),
(?,'leavewhenempty','no','0'),
(?,'strategy','ringall','0'),
(?,'timeout','15','0'),
(?,'retry','5','0'),
(?,'wrapuptime','0','0'),
(?,'announce-frequency','60','0'),
(?,'announce-holdtime','no','0'),
(?,'announce-position','yes','0'),
(?,'queue-youarenext','queue-youarenext','0');");
请注意,所有 ? 值都将是相同的 id。
这维护起来很复杂,并且很难在 prepare 和 execute 中添加/删除行。
这些占位符 (?s) 是否有任何编号方法,以便我可以轻松找到需要更改的行。
谢谢!
【问题讨论】:
-
即使没有占位符,INSERT 也会非常笨拙。您是否真的在脚本中使用不同的 ID 值集多次执行此查询?
-
目前一次只有一个 ID 值。
标签: sql perl placeholder dbi