snowflake-cloud-data-platform - 存储过程 SQL 编译错误中的执行错误:Statement.execute 中的标识符“TEST3”无效
问题描述
我在下面创建了存储过程,但是在 where 子句中解析 VAL 时出错,我也尝试过双引号“和 backstick `
create or replace TABLE T1 (
COL VARCHAR(16777216)
);
insert into t1 values ('test1');
insert into t1 values ('test2');
insert into t1 values ('test3');
create or replace procedure ifcopied(val varchar)
returns varchar
language javascript
execute as caller
as
$$
sql_command = "select * from t1 where col = " + VAL;
var stmt = snowflake.createStatement({sqlText:sql_command});
var res = stmt.execute();
res.next();
row_status = res.getColumnValue(1);
return row_status
$$;
call ifcopied('test3')
;
低于错误
Execution error in store procedure IFCOPIED: SQL compilation error: error line 1 at position 29 invalid identifier 'TEST3' At Statement.execute, line 4 position 50
存储过程 IFCOPIED 中的执行错误:SQL 编译错误:位置 29 处的错误第 1 行无效标识符“TEST3”在 Statement.execute 第 4 行位置 50
解决方案
除了 Gokhan 所拥有的之外,您还可以通过这种方式执行它。
sql_command = `select * from t1 where col = '${VAL}';`
这可以减少您对连接的使用,并允许您查看变量。
推荐阅读
- swift - 为什么我不能将 JSON 响应分配给变量以供以后使用?
- c++ - 服务器和客户端都运行在 PC 上。客户端可以使用PC的IP连接到服务器吗?
- sass - Zurb Foundation 断点更改未生效
- sql-server - 插入多对多表时代码第一个表名错误
- c# - 使用 Xamarin.Forms Carousel View 显示 ListView 列表,每个包含对象列表
- python - Modbus 错误:[Invalid Message] 收到不完整的消息,预计至少 2 个字节(收到 0)
- operating-system - I need some example of long term scheduler and short term scheduler
- python - 有没有办法计算与键对应的字典值中的项目数?
- reactjs - 如何在 Laravel Mix for React 中使用提取和代码拆分
- javascript - 页面更改时检查dom中是否存在元素