是否可以在变量 CLOB 中的执行代码中指定另一个 CLOB 中的值 (JSON)
Is it possible to specify in the execution code, which is in the variable CLOB, the values that are in another CLOB (JSON)
JSON 通过 api 找到我。我把它放在一个可移动的 clob 中 (v_clob)
{
"devices":{
"id":"d652f632-0835-871b-a140-58701f019000",
"scale_id":"88348A32BD3D149FE055000000000001"
},
"data":{
"external_id":"40023"
},
"data_weight":{
"weight":"20322",
"prevWeight":"1000",
"prevTransaction":"1607680754361",
"transaction":"1607680754361",
"on":"false",
"transactionDataCount":"1",
"stable":"false",
"duration":"12",
"transactionMaxWeight":"2000",
"perimetr":"true",
"driverInCar":"false"
}
}
我有一个 table 的 clob 格式。我在这个 table 中存储了一些代码(以 clob 格式)。这是代码(在这段代码中我寻找一个带有外部ID的条目,然后我根据条件寻找必要的脚本):
WITH rowsel as (select OBL_TAREDAT ,OBL_BRUTTODAT,DIRECTIONID,TARE,BRUTTO from
(select OBL_TAREDAT ,OBL_BRUTTODAT,DIRECTIONID,TARE,BRUTTO from WAYBILLS
where EXTERNAL_ID = {{EXTERNAL_ID}}
and OBL_TTN is null))
SELECT CASE
WHEN rowsel.OBL_BRUTTODAT is null and rowsel.DIRECTIONID = '1' THEN 41
WHEN rowsel.OBL_TAREDAT is null and rowsel.DIRECTIONID = '1' THEN 21
WHEN rowsel.OBL_TAREDAT is null and rowsel.DIRECTIONID = '-1' THEN 62
WHEN rowsel.OBL_BRUTTODAT is null and rowsel.DIRECTIONID = '-1' THEN 61
ELSE 0 END
FROM rowsel
我有一个疑问,在查询中搜索我需要的记录时,是否可以使用通过 api 传来的数据来指定此数据。例如,我想更换
v_clob.data.external_id 上的“{{EXTERNAL_ID}}”???
我知道我可以用命令解析这个密钥
v_external_id: = apex_json.get_varchar2 (p_path => 'data.external_id', p_values => tv);
然后进行替换,运行找到table中的代码。
v_msg_in := REPLACE(v_msg_in,'{{EXTERNAL_ID}}',chr(39)|| v_external_id|| chr(39))
(v_msg_in - clob 我把代码保存到运行) 但是问题是这个JSON可以改,我总是需要改代码。但是如果我可以参考Jason自己来找我,那么我就可以通过table中的代码来完成(我会使用apex oracle)。通过top of oracle,用户将能够编辑查询
在表单中,并且不需要在此过程中编辑代码。
像下面这样的查询应该会为您提供所需的值。在下面的示例中,我已将整个示例 JSON 作为字符串粘贴,但您可以在代码中将其替换为 CLOB 变量。 JSON_VALUE
函数可用于通过指定值的路径从 JSON CLOB/BLOB/VARCHAR2 中检索单个值。
WITH
rowsel
AS
(SELECT OBL_TAREDAT,
OBL_BRUTTODAT,
DIRECTIONID,
TARE,
BRUTTO
FROM (SELECT OBL_TAREDAT,
OBL_BRUTTODAT,
DIRECTIONID,
TARE,
BRUTTO
FROM WAYBILLS
WHERE EXTERNAL_ID = json_value ('{
"devices":{
"id":"d652f632-0835-871b-a140-58701f019000",
"scale_id":"88348A32BD3D149FE055000000000001"
},
"data":{
"external_id":"40023"
},
"data_weight":{
"weight":"20322",
"prevWeight":"1000",
"prevTransaction":"1607680754361",
"transaction":"1607680754361",
"on":"false",
"transactionDataCount":"1",
"stable":"false",
"duration":"12",
"transactionMaxWeight":"2000",
"perimetr":"true",
"driverInCar":"false"
}
}', '$.data.external_id') AND OBL_TTN IS NULL))
SELECT CASE
WHEN rowsel.OBL_BRUTTODAT IS NULL AND rowsel.DIRECTIONID = '1' THEN 41
WHEN rowsel.OBL_TAREDAT IS NULL AND rowsel.DIRECTIONID = '1' THEN 21
WHEN rowsel.OBL_TAREDAT IS NULL AND rowsel.DIRECTIONID = '-1' THEN 62
WHEN rowsel.OBL_BRUTTODAT IS NULL AND rowsel.DIRECTIONID = '-1' THEN 61
ELSE 0
END
FROM rowsel
JSON 通过 api 找到我。我把它放在一个可移动的 clob 中 (v_clob)
{
"devices":{
"id":"d652f632-0835-871b-a140-58701f019000",
"scale_id":"88348A32BD3D149FE055000000000001"
},
"data":{
"external_id":"40023"
},
"data_weight":{
"weight":"20322",
"prevWeight":"1000",
"prevTransaction":"1607680754361",
"transaction":"1607680754361",
"on":"false",
"transactionDataCount":"1",
"stable":"false",
"duration":"12",
"transactionMaxWeight":"2000",
"perimetr":"true",
"driverInCar":"false"
}
}
我有一个 table 的 clob 格式。我在这个 table 中存储了一些代码(以 clob 格式)。这是代码(在这段代码中我寻找一个带有外部ID的条目,然后我根据条件寻找必要的脚本):
WITH rowsel as (select OBL_TAREDAT ,OBL_BRUTTODAT,DIRECTIONID,TARE,BRUTTO from
(select OBL_TAREDAT ,OBL_BRUTTODAT,DIRECTIONID,TARE,BRUTTO from WAYBILLS
where EXTERNAL_ID = {{EXTERNAL_ID}}
and OBL_TTN is null))
SELECT CASE
WHEN rowsel.OBL_BRUTTODAT is null and rowsel.DIRECTIONID = '1' THEN 41
WHEN rowsel.OBL_TAREDAT is null and rowsel.DIRECTIONID = '1' THEN 21
WHEN rowsel.OBL_TAREDAT is null and rowsel.DIRECTIONID = '-1' THEN 62
WHEN rowsel.OBL_BRUTTODAT is null and rowsel.DIRECTIONID = '-1' THEN 61
ELSE 0 END
FROM rowsel
我有一个疑问,在查询中搜索我需要的记录时,是否可以使用通过 api 传来的数据来指定此数据。例如,我想更换 v_clob.data.external_id 上的“{{EXTERNAL_ID}}”???
我知道我可以用命令解析这个密钥
v_external_id: = apex_json.get_varchar2 (p_path => 'data.external_id', p_values => tv);
然后进行替换,运行找到table中的代码。
v_msg_in := REPLACE(v_msg_in,'{{EXTERNAL_ID}}',chr(39)|| v_external_id|| chr(39))
(v_msg_in - clob 我把代码保存到运行) 但是问题是这个JSON可以改,我总是需要改代码。但是如果我可以参考Jason自己来找我,那么我就可以通过table中的代码来完成(我会使用apex oracle)。通过top of oracle,用户将能够编辑查询 在表单中,并且不需要在此过程中编辑代码。
像下面这样的查询应该会为您提供所需的值。在下面的示例中,我已将整个示例 JSON 作为字符串粘贴,但您可以在代码中将其替换为 CLOB 变量。 JSON_VALUE
函数可用于通过指定值的路径从 JSON CLOB/BLOB/VARCHAR2 中检索单个值。
WITH
rowsel
AS
(SELECT OBL_TAREDAT,
OBL_BRUTTODAT,
DIRECTIONID,
TARE,
BRUTTO
FROM (SELECT OBL_TAREDAT,
OBL_BRUTTODAT,
DIRECTIONID,
TARE,
BRUTTO
FROM WAYBILLS
WHERE EXTERNAL_ID = json_value ('{
"devices":{
"id":"d652f632-0835-871b-a140-58701f019000",
"scale_id":"88348A32BD3D149FE055000000000001"
},
"data":{
"external_id":"40023"
},
"data_weight":{
"weight":"20322",
"prevWeight":"1000",
"prevTransaction":"1607680754361",
"transaction":"1607680754361",
"on":"false",
"transactionDataCount":"1",
"stable":"false",
"duration":"12",
"transactionMaxWeight":"2000",
"perimetr":"true",
"driverInCar":"false"
}
}', '$.data.external_id') AND OBL_TTN IS NULL))
SELECT CASE
WHEN rowsel.OBL_BRUTTODAT IS NULL AND rowsel.DIRECTIONID = '1' THEN 41
WHEN rowsel.OBL_TAREDAT IS NULL AND rowsel.DIRECTIONID = '1' THEN 21
WHEN rowsel.OBL_TAREDAT IS NULL AND rowsel.DIRECTIONID = '-1' THEN 62
WHEN rowsel.OBL_BRUTTODAT IS NULL AND rowsel.DIRECTIONID = '-1' THEN 61
ELSE 0
END
FROM rowsel