我有一个存储的proc,我在其中用值构造JSON,我想将其传递给子proc,更新相同的JSOn变量并将其返回。
CREATE OR REPLACE PROC1()
RETURNS STRING
LANGUAGE JavaScript
AS
'
--Some functions and constants
function execSqlSingleValue(sql_text){
exec_result = snowflake.execute({sqlText:sql_text});
exec_result.next();
return exec_result.getColumnValue(1);
}
const column1 = `ABC`;
const column2 = `DEF`;
const column3 = `GHL`;
var v1_json = {
col1: column1,
col2: column2,
col3: column3,
col4: `NONE`,
col5: 0,
}
try{
return execSqlSingleValue(`CALL PROC2(\'${v1_json}\')`);
}
catch(err){
return JSON.stringify(v1_json);
}
'
;
CREATE OR REPLACE PROCEDURE PROC2(v1_json VARIANT)
RETURNS STRING
LANGUAGE JavaScript
AS
'
常数列4 = XYZ
;--其他一些计算常数column 5 = MMM
;--其他一些计算
v1_json.col4 = `${column4}`;
v1_json.col5 = `${column5}`;
return JSON.stringify(v1_json);
'
;
我试过用VARIANT和VARCHAR来做,但是没有成功。我们如何做到这一点?
1条答案
按热度按时间mspsb9vt1#
您是否尝试过将其转换为字符串,然后在子过程中转换JSON?
在子过程中(v1_json定义为varchar参数):