我通过DBI和Perl中的DBD::Pg
模块访问AWS RedShift,我遇到了SQL绑定变量的问题。我首先使用sql语句(?
代替变量)调用prepare,然后使用需要映射到?
的变量数组调用execute但它不起作用。它只是吐出“语法错误”。
我的理解是这个绑定变量需要得到驱动程序和数据库本身的支持,所以我不确定它是驱动程序还是RedShift的问题,但后来我不确定我的理解是否(绑定变量支持取决于在驱动程序和底层数据库上)是正确的。如果有人可以澄清,那就太好了。
答案 0 :(得分:2)
支持预备语句,但参数的正确表示法是$ 1,$ 2,...
预备语句可以采用参数:替换的值 执行时的语句。要包含参数 准备好的语句,提供PREPARE中的数据类型列表 声明,并且在要准备的声明中,请参考 按位置使用符号$ 1,$ 2,...执行时的参数 声明,在中指定这些参数的实际值 执行声明。