Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function mariadb操作,过程错误SQL中有错误 分隔符/ 创建函数filltimeDim() 开始 声明vquartervarchar(6); 声明vMonth_名称VARCHAR(20); 声明vdate_id日期; 声明vyear_id CHAR(4); 声明vweekly_Name VARCHAR(20); 宣布第五个月(10); 宣布星期五(10); 开始 设置vdate_id=转换('1998-01-01',日期); 而(CONVERT('vdate_id'使用utf8)_Function_Mariadb_Procedure - Fatal编程技术网

Function mariadb操作,过程错误SQL中有错误 分隔符/ 创建函数filltimeDim() 开始 声明vquartervarchar(6); 声明vMonth_名称VARCHAR(20); 声明vdate_id日期; 声明vyear_id CHAR(4); 声明vweekly_Name VARCHAR(20); 宣布第五个月(10); 宣布星期五(10); 开始 设置vdate_id=转换('1998-01-01',日期); 而(CONVERT('vdate_id'使用utf8)

Function mariadb操作,过程错误SQL中有错误 分隔符/ 创建函数filltimeDim() 开始 声明vquartervarchar(6); 声明vMonth_名称VARCHAR(20); 声明vdate_id日期; 声明vyear_id CHAR(4); 声明vweekly_Name VARCHAR(20); 宣布第五个月(10); 宣布星期五(10); 开始 设置vdate_id=转换('1998-01-01',日期); 而(CONVERT('vdate_id'使用utf8),function,mariadb,procedure,Function,Mariadb,Procedure,您可能希望创建一个而不是一个函数 此外,MariaDB使用DO关键字而不是LOOP来标记循环的开始和结束。下面是成功完成的SQL的固定版本: DELIMITER / CREATE FUNCTION filltimeDim () BEGIN DECLARE vQuarter VARCHAR(6); DECLARE vMonth_Name VARCHAR(20); DECLARE vdate_id date; DECLARE vyear_id CHAR(4);

您可能希望创建一个而不是一个函数

此外,MariaDB使用
DO
关键字而不是
LOOP
来标记循环的开始和结束。下面是成功完成的SQL的固定版本:

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; /
分隔符//
创建过程filltimeDim()
开始
声明vquartervarchar(6);
声明vMonth_名称VARCHAR(20);
声明vdate_id日期;
声明vyear_id CHAR(4);
声明vweekly_Name VARCHAR(20);
宣布第五个月(10);
宣布星期五(10);
开始
设置vdate_id=转换('1998-01-01',日期);

WHILE(转换(使用utf8的vdate_id)您正在显式声明一个函数。它需要在开始之前进行返回声明。请查看文档:您真的需要
转换
?数据类型日期和字符串应该是兼容的。并且
SET vdate\u id=vdate\u id+1;
不能与
日期
一起使用。请改为
SET vDATEYID= VDATEYID +间隔1天;一个“TimeSimDIM”维度表通常对于数据仓库来说是个坏主意,至少当您开始使用DIM表进行查找时(如查找所有“星期一”行)。;这可以避免光标等。谢谢!哦!我来晚了。无论如何,在花了一些时间编写MariaDB文档后,我成功地完成了这项工作并使其正常工作,是的,我需要一个过程。我不太了解日期算术和数字算术。如果您使用日期作为数据类型,则必须以
+间隔1天
将它们递增>,否则会出现错误。
DELIMITER //
CREATE PROCEDURE 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')
        DO
            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 + INTERVAL 1 DAY;
        END WHILE;
    END;
END; //