stored-procedures - 雪花存储过程没有插入记录但没有错误
问题描述
有人能告诉我为什么这会运行但实际上不会插入记录吗?当我将实际查询作为变量返回时,代码在 Snowflake 中完美运行:
CREATE OR REPLACE PROCEDURE Z_PC_FIVETRAN_DB.BLOB_RAW_CATALOGS.SP_FULL_AND_IS_HERRING_MOVE_CURRENT_DELETED_TO_PCFIVE(ACTION_TYPE VARCHAR,UPLOAD_ID VARCHAR,VENDOR VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
var sql_textA = "INSERT INTO Z_PC_FIVETRAN_DB.BLOB_RAW_CATALOGS.RAW_CATALOGS (M_PDT_CODE) SELECT M_PDT_CODE FROM Z_CATALOGS_NEW.PUBLIC.CATALOGS_RAW WHERE M_VENDOR_NAME='HERRING' AND M_PDT_CODE NOT IN (SELECT M_PDT_CODE FROM Z_PC_FIVETRAN_DB.BLOB_RAW_CATALOGS.RAW_CATALOGS WHERE M_UPLOAD_ID='" +UPLOAD_ID+ "' AND M_PDT_CODE IS NOT NULL)"
var sql_commandA = snowflake.createStatement({ sqlText: sql_textA})
if (VENDOR=='HERRING' && ACTION_TYPE=='FULL')
{
var db = sql_commandA.execute()
return sql_textA
}
else
{
return 'Not HERRING Or Not FULL'
}
$$;
解决方案
我运行了您的代码并且能够插入行。我能想到的唯一一件事是是否为您关闭了 AUTOCOMMIT 以及您是否需要显式调用 COMMIT。尝试在 INSERT 之后调用 COMMIT 并查看它是否有效。
ALTER SESSION SET AUTOCOMMIT = FALSE;
CREATE OR REPLACE TABLE CATALOGS_RAW(M_VENDOR_NAME VARCHAR, M_PDT_CODE VARCHAR);
CREATE TABLE RAW_CATALOGS(M_PDT_CODE VARCHAR,M_UPLOAD_ID VARCHAR);
INSERT INTO CATALOGS_RAW VALUES('HERRING','PDT0002');
INSERT INTO CATALOGS_RAW VALUES('HERRING','PDT0003');
INSERT INTO CATALOGS_RAW VALUES('HERRING','PDT0005');
COMMIT;
SELECT * FROM CATALOGS_RAW;
INSERT INTO RAW_CATALOGS VALUES('PDT0001','UPD0001');
SELECT * FROM RAW_CATALOGS;
CREATE OR REPLACE PROCEDURE TESTPROC(ACTION_TYPE VARCHAR,UPLOAD_ID VARCHAR,VENDOR VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
var sql_textA = "INSERT INTO RAW_CATALOGS (M_PDT_CODE) SELECT M_PDT_CODE FROM CATALOGS_RAW WHERE M_VENDOR_NAME='HERRING' AND M_PDT_CODE NOT IN (SELECT M_PDT_CODE FROM RAW_CATALOGS WHERE M_UPLOAD_ID='" +UPLOAD_ID+ "' AND M_PDT_CODE IS NOT NULL)"
var sql_commandA = snowflake.createStatement({ sqlText: sql_textA})
if (VENDOR=='HERRING' && ACTION_TYPE=='FULL')
{
var db = sql_commandA.execute()
return sql_textA
}
else
{
return 'Not HERRING Or Not FULL'
}
$$;
CALL TESTPROC('FULL','UPD0003','HERRING');
COMMIT;
推荐阅读
- python - Python:使用 sh 加载 venv 的烧瓶
- python - 如何从列表中动态打印
- css - 如果窗口高于css中的宽度,有没有办法进行媒体查询?(任何设备的纵向与横向)
- webhooks - 使用 Flow 从 Teams 中的消息中解析值
- php - 如何修复我的 php 无法从 mySQL 数据库中获取用户名和密码?
- javascript - 从多个选择框中选择值时,我在表上得到重复数据
- javascript - 以这种方式放置 getElementById 后,排序功能无法按预期工作
- c# - 此代码将生成一个 wav 文件,但不包含任何录音
- image - 如何从python中的图像列表中获取R,G,B
- c++ - 重载向量的多维数组运算符