Jac*_*sky 5 node.js snowflake-cloud-data-platform
假设我有一个数字 ID 数组
let arr = [123, 456]
Run Code Online (Sandbox Code Playgroud)
现在,我想获取具有这些 ID 的所有记录
try{
connection.execute({
binds: [arr],
sqlText: `
SELECT DISTINCT name, id
FROM my_table
WHERE id IN (?)
`,
complete: (err, stmt, rows) => {
// receive results
}
});
Run Code Online (Sandbox Code Playgroud)
对于“arr”数组中的第一个 id,我只得到 1 列。我想获得与“arr”数组中的 id 匹配的所有行的结果
这适用于 Snowflake 的 JavaScript 存储过程并演示如何绑定数组。它使用二维数组,因此可用于在 VALUES 子句中构造表。如果您愿意,可以修改它以与一维数组一起使用,并根据需要调整代码。
我还没有在 Node.js 中尝试过相同的方法,但我相信相同的方法也适用于 Node.js。如果没有的话我可以尝试调整一下。
create or replace procedure BIND_TEST()
returns string
language javascript
as
$$
// Defined as a two dimensional array to enable construction of a table in a VALUES clause
let arr = [[3, 23, 24]];
let binds = arr.reduce((a, b) => a.concat(b));
let cols = arr[0].map(()=>"?").join(",");
let placeholders = arr.map(()=>"(" + cols + ")").join(",");
let sql = `
SELECT DISTINCT N_NAME, N_REGIONKEY
FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1000"."NATION"
WHERE N_NATIONKEY IN ${placeholders}`;
let cmd = {sqlText: sql, binds: binds};
var stmt = snowflake.createStatement(
{
sqlText: sql,
binds: binds
}
);
let rs = stmt.execute();
let out = "";
while(rs.next()) {
if (out != "") out += ",";
out += rs.getColumnValue("N_NAME");
}
return out;
$$;
call bind_test();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |