因此,我遇到了将 JSON 数据转换为 BYTEA 的函数脚本,然后将其作为记录插入到表中的 BYTEA 列中。(正如我假设的代码在做什么)
在 Oracle 中,函数 utl_raw.cast_to_raw 将数据转换为 blob 数据,并将数据记录在表中的 Blob 列中。给出以下输出消息,“匿名块已完成”
以下是代码,
CREATE OR REPLACE FUNCTION INS_BLOB() RETURNS VOID AS $$
DECLARE
v1 "TBL1"."COL1"%TYPE;
v2 "TBL1"."COL2"%TYPE;
BEGIN
v1 := utl_raw.cast_to_raw('{
"APPLICATION": {
"MEMORY": {
"OPTIONS" :{
"SOMETHING" : "SOMETHING",
"format" : "SOMETHING",
"System" : "",
"IP" : "",
"Port" : "",
"template" : "",
"Path" : "" ,
"Name" : "QUEUE",
"URL" : ""
}');
v2 := utl_raw.cast_to_raw('{
"APPLICATION": {
"MEMORY": {
"OPTIONS" :{
"SOMETHING" : "SOMETHING",
"format" : "SOMETHING",
"System" : "",
"IP" : "",
"Port" : "",
"template" : "",
"Path" : "" ,
"Name" : "QUEUE",
"URL" : ""
}');
INSERT INTO "TBL1" ("SN","COL1","COL2") values(1,v1, v2);
END;
$$
LANGUAGE 'plpgsql';
COMMIT;
[已解决]编辑:所以一般来说问题没什么。所以我只需要删除utl_raw.cast_to_raw行并按原样执行它。没有错误,没有问题。谢谢
没有理由转换任何东西,只需插入 JSON 字符串(在使它们成为有效 JSON 之后):
您也不需要为此使用 PL/pgSQL。一个
language sql
函数就足够了(你需要删除begin
andend
)没有理由这样做。PostgreSQL 有一个二进制 JSON 类型,
jsonb
. 只需将您的数据存储为 JSONB。这将为您提供大量可以与此类型一起使用的运算符和函数。 JSONB 无论如何都是 varlena(就像 bytea)
也可以看看,