首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snowflake存储过程未插入记录,但没有错误

Snowflake存储过程未插入记录,但没有错误
EN

Stack Overflow用户
提问于 2020-09-10 04:31:51
回答 1查看 97关注 0票数 0

谁能告诉我为什么这会运行,而不是实际插入记录?当我将实际查询作为变量返回时,代码在Snowflake中工作得很好:

代码语言:javascript
复制
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'
}
$$; 
EN

回答 1

Stack Overflow用户

发布于 2020-09-10 04:59:23

我运行了你的代码,并且能够插入行。我唯一能想到的就是如果AUTOCOMMIT为你关闭了,如果你需要显式调用COMMIT。尝试在INSERT之后调用COMMIT,看看它是否工作。

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63819156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档