![](/img/trans.png)
[英]is it possible to make MySQL Db to store data in Uppercase without UPPER() function
[英]Is it possible to make a function that receives a JSON parameter in MySQL?
我想知道是否可以制作一個接收 MySQL 參數的 JSON 參數的 function。 在 PostgreSQL 中完成了類似的操作(附加示例)。
我需要將 PostgreSQL DB 遷移到 MySQL 並且有很多這樣的功能。
CREATE OR REPLACE FUNCTION fn_crud_sls_quotation_concept_types (data json)
RETURNS boolean
LANGUAGE 'plpgsql'
AS
$$
DECLARE
"vType" integer := data ->> 'type';
"vId" bigint := data ->> 'id';
"vDescription" varchar := data ->> 'description';
"vStatus" integer := data ->> 'status';
"vUserId" integer := data ->> 'userId';
BEGIN
IF "vType" = 1 THEN -- Data Insert
INSERT INTO tbl_sls_quotation_concept_types(description, status, "createdBy")
VALUES("vDescription", "vStatus", "vUserId");
RETURN TRUE;
ELSIF "vType" = 2 THEN -- Data Update
UPDATE tbl_sls_quotation_concept_types
SET "description" = "vDescription",
"status" = "vStatus",
"updatedBy" = "vUserId",
"updatedAt" = current_timestamp
WHERE id = "vId";
RETURN TRUE;
ELSIF "vType" = 3 THEN -- Data Delete
UPDATE tbl_sls_quotation_concept_types
SET status = 0 ,
"updatedBy" = "vUserId",
"updatedAt" = current_timestamp
WHERE id = "vId" ;
RETURN TRUE;
END IF;
END;
$$;
是的,存儲的 function 可以接受 JSON 數據類型的輸入參數:
mysql> delimiter $$
mysql> create function myfunc(data json) returns varchar(10) deterministic
begin
declare val varchar(10);
set val = json_extract(data, '$.val');
return val;
end$$
mysql> delimiter ;
mysql> select myfunc('{"foo": 1, "val": "bar"}');
+------------------------------------+
| myfunc('{"foo": 1, "val": "bar"}') |
+------------------------------------+
| "bar" |
+------------------------------------+
https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html說:
類型:
任何有效的 MySQL 數據類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.