Plsql MariaDB pl/sql用于填充日期为“1990-01-01”到“2000-12-31”的表
我试图创建一个过程或函数来填充MariaDB中的表名Time_DimPlsql MariaDB pl/sql用于填充日期为“1990-01-01”到“2000-12-31”的表,plsql,mariadb,procedure,populate,auto-populate,Plsql,Mariadb,Procedure,Populate,Auto Populate,我试图创建一个过程或函数来填充MariaDB中的表名Time_Dim DELIMITER / CREATE FUNCTION filltimeDim () BEGIN DECLARE vQuarter VARCHAR(6); DECLARE vMonth_Name VARCHAR(20); DECLARE vdate_id date; DECLARE vyear_id CHAR(4); DECLARE vweekly_Name VARCHAR(20);
DELIMITER /
CREATE FUNCTION filltimeDim ()
BEGIN
DECLARE vQuarter VARCHAR(6);
DECLARE vMonth_Name VARCHAR(20);
DECLARE vdate_id date;
DECLARE vyear_id CHAR(4);
DECLARE vweekly_Name VARCHAR(20);
DECLARE vMonth_Num TINYINT(10);
DECLARE vweekday_Num TINYINT(10);
BEGIN
SET vdate_id = CONVERT('1998-01-01', DATE);
WHILE (CONVERT('vdate_id' USING utf8) <= '2002-12-31')
LOOP
SET vyear_id = YEAR(vdate_id);
SET vQuarter = QUARTER(vdate_id);
SET vMonth_Name = MONTHNAME(vdate_id);
SET vweekly_Name = DAYOFWEEK(vdate_id);
SET vMonth_Num = MONTH(vdate_id);
SET vweekday_Num = WEEKDAY(vdate_id);
INSERT INTO Time_Dim VALUES
(vdate_id, vyear_id, vquarter, vMonth_Name,vweekly_Name,vMonth_Num,vweekday_Num);
SET vdate_id = vdate_id + 1;
END LOOP;
END;
END; /
错误1064 42000:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解使用near“LOOP”的正确语法
设置vyear\u id=YEARvdate\u id;
在第13行设置vQuarter=QUA,MariaDB中while的语法为:
[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]
您不应该使用“循环”关键字您可以使用:
-挑选
-日期:2002-12-31,1990-01-014747
插入'Time_Dim'
`vdate_id`,
`vyear\U id`,
`四分之一`,
`vMonth_名称`,
`vweekly_Name`,
`月数`,
`vweekday_Num`
选择
`第`.`天`,
年月日,
四分之一日,
MONTHNAME'der`.'day`,
DAYOFWEEK'der`.'day`,
月日,
工作日'der'。'day`
从…起
选择
“1990-01-01”+间隔日`
从…起
`序号0至4747`
`德`;
请参阅。您是否查阅了手册?因为它的字面意思是错误的。“PL/SQL”是Oracle在数据库编程语言中的名称。我推测MariaDB有Oracle兼容模式,但上面的代码不是PL/SQL。这是否回答了您的问题?William Robertson你说得对,我们如何称呼maria的数据库编程语言?是的,markusjm,它确实回答了我的问题。