在我的存储过程中:
DECLARE execution_time DATETIME;
SELECT `Execution_Time`
FROM `orders`
WHERE `ID` = 1
INTO execution_time;
除非Execution_Time
和execution_time是整数,否则此查询似乎不起作用。如果它们都是varchars
或datetime
,它们似乎无效。 execution_time
仍为NULL
。
是否有特定的方法使其适用于其他数据类型而不仅仅是整数?
答案 0 :(得分:0)
您的代码应该适用于字符串,数字和日期。我很确定问题是列和变量之间的混淆。你可以尝试:
DECLARE v_execution_time DATETIME;
SELECT `Execution_Time`
FROM `orders`
WHERE `ID` = 1
INTO v_execution_time;
或者,我可能做的事情:
DECLARE @execution_time DATETIME;
SELECT @execution_time := o.Execution_Time
FROM orders o
WHERE o.ID = 1;
我认为into
存在与Oracle的(某种)兼容性。 MySQL有更简单的方法来分配变量。
答案 1 :(得分:-1)
了解select ... into。你应该在......之前写入条款 为你的例子:
DECLARE execution_time2 DATETIME;
SELECT `Execution_Time`
INTO execution_time2
FROM `orders`
WHERE `ID` = 1;
和"局部变量的名称不应与表格列相同"阅读Local Variable Scope and Resolution