gpt4 book ai didi

mysql - 无法在 mariadb 中创建 FUNCTION

转载 作者:行者123 更新时间:2023-11-29 15:50:03 24 4
gpt4 key购买 nike

我无法在 mariadb 版本:10.1.37-MariaDB-0+deb9u1 Debian 9.6 中创建函数

mariadb/mysql 编程新手。我正在将电子表格数据移至数据库。

没有存储过程或函数,并且我使用的是完全权限帐户。我正在填写机器表,该表需要引用商店表中的商店记录。一个商店可以有几台机器,因此机器不是商店表中的字段。

我只是想获得正确的语法来创建一个函数,这样我就可以批量处理一系列数字。它最初是一系列 SELECT 和 IF 语句,脚本因 IF 语句而卡住了。我在某人的帖子中读到 IF 语句只能在函数和过程中使用。这是真的吗?

使用“SOURCE gen.mach.store.bat;”时出现的错误在交互模式下或“mysql -u fullpriv -pabc1234 < gen.mach.store.bat”(不是真正的 accnt/pswd)是:

ERROR 1064 (42000) at line 4 in file: 'gen.mach.store.bat': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'BEGIN
DECLARE tid MEDIUMINT;
SET tid:=-1 ;
SELECT tid:=id FROM stores WHER' at line 2
Query OK, 0 rows affected, 1 warning (0.00 sec)

代码:

USE SWIMAT ;
DROP FUNCTION IF EXISTS sMachine;
DELIMITER $$
CREATE FUNCTION sMachine( sstore MEDIUMINT , smach MEDIUMINT )
BEGIN
DECLARE tid MEDIUMINT;
SET tid:=-1 ;
SELECT tid:=id FROM stores WHERE name="ChainX" AND number=sstore;
IF tid != -1 THEN
INSERT INTO machines(store,sn) VALUES (tid,smach);
END IF;
END
$$
DELIMITER ;
DROP FUNCTION IF EXISTS sMachine;

如果我将创建代码更改为

CREATE AGGREGATE FUNCTION sMachine( sstore MEDIUMINT , smach MEDIUMINT )

错误接近'( sstore MEDIUMINT , smach MEDIUMINT )

函数名有问题吗?我已经多次更改名称并更改整个地方的空白。我用分号搞砸了。我曾在函数中添加了一个带有 RETURN 的 RETURNS 语句。

由于缺乏更好的词“版本”,我已经发布了我当前的工作。

最佳答案

您可能想要使用 PROCEDURE 而不是 FUNCTION,因为您不返回值并且不打算在查询中使用该函数。

代码的另一个问题是语法 SELECT tid:=id,请改用 SELECT ... INTO

USE SWIMAT ;
DROP PROCEDURE IF EXISTS sMachine;
DELIMITER $$
CREATE PROCEDURE sMachine( sstore MEDIUMINT , smach MEDIUMINT )
BEGIN
DECLARE tid MEDIUMINT;
DECLARE v_found MEDIUMINT;

SELECT id, 1 into tid, v_found
FROM stores
WHERE name="ChainX" AND number=sstore;

IF (v_found = 1) THEN
INSERT INTO machines(store,sn) VALUES (tid,smach);
END IF;
END
$$

然后您可以使用该过程:

CALL sMachine(1,2);

关于mysql - 无法在 mariadb 中创建 FUNCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56812372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com