我正在尝试对MySQL 5.0中的变量进行一些简单的操作,但是我无法完全正常工作。我已经看到了很多(非常!)DECLARE /
SET的不同语法,我不确定为什么……在任何情况下,我都可能会混淆它们/选择错误的语法/混合它们。
这是一个失败的最小片段:
DECLARE FOO varchar(7);
DECLARE oldFOO varchar(7);
SET FOO = '138';
SET oldFOO = CONCAT('0', FOO);
update mypermits
set person = FOO
where person = oldFOO;
我也尝试过使用BEGIN … END包装它;并作为一个程序。在这种情况下,MySQL
Workbench会帮助我:第一行显示“’)’附近的SQL语法错误”,第二行显示“’DECLARE oldFOO
varchar(7)’附近的SQL语法错误”。否则,它将全部两行都显示为错误,并且两行都带有“ SQL语法错误在…附近”。
编辑:我忘了提到我在变量上有@s的情况下尝试了它。有的资源有,有的没有。
我犯了什么愚蠢的错误?
使用MySQL 5.1.35对我来说效果很好:
DELIMITER $$
DROP PROCEDURE IF EXISTS `example`.`test` $$
CREATE PROCEDURE `example`.`test` ()
BEGIN
DECLARE FOO varchar(7);
DECLARE oldFOO varchar(7);
SET FOO = '138';
SET oldFOO = CONCAT('0', FOO);
update mypermits
set person = FOO
where person = oldFOO;
END $$
DELIMITER ;
桌子:
DROP TABLE IF EXISTS `example`.`mypermits`;
CREATE TABLE `example`.`mypermits` (
`person` varchar(7) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO mypermits VALUES ('0138');
CALL test()
问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl
问题内容: 当我在node.js中键入时,我得到了。 如果没有关键字,则通过(=> 15)。它可以在Chrome控制台中运行(带有和不带有关键字)。 问题答案: 使用时它在Node中不起作用,因为它是 当前模块 的 本地变量 。您应该直接引用它:。 不输入时,发生的事情现在 是整个Node进程中的全局变量 。 在Chrome浏览器(或其他任何浏览器中-我不确定oldIE …),无论您是否在示例中使
修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?
let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v
问题内容: Java编译器如何处理以下开关块?“ b”变量的范围是什么? 注意,“ b”变量仅在switch语句的第一个分支中声明。尝试在第二个分支中声明它也会导致“重复的局部变量”编译错误。 注意:以上代码使用Java 1.6编译器进行编译。 问题答案: 与通常一样,范围由和分隔。
主要内容:声明变量,变量赋值Java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义: 所有的变量必须先声明、后使用。 指定类型的变量只能接受类型与之匹配的值。 这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义。 常量和变量是 Java 程序中最基础的两个元素。常量的值是不