Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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
MySQL查询浏览器-使用变量_Sql_Mysql_Variables - Fatal编程技术网

MySQL查询浏览器-使用变量

MySQL查询浏览器-使用变量,sql,mysql,variables,Sql,Mysql,Variables,我习惯了MSSQL的查询分析器。我需要为一个爱好项目转换一些SP,在转换到mysql查询浏览器时遇到了困难,特别是在使用变量时。我基本上是在模拟一个过程之前 所以在查询分析器中,我会这样写 delcare @var1 int declare @var2 varchar(30) set @var1 = 17 --some thing i'd normally pass to the SP set @var2 = 'something else id pass to the SP' SELECT

我习惯了MSSQL的查询分析器。我需要为一个爱好项目转换一些SP,在转换到mysql查询浏览器时遇到了困难,特别是在使用变量时。我基本上是在模拟一个过程之前

所以在查询分析器中,我会这样写

delcare @var1 int
declare @var2 varchar(30)

set @var1 = 17 --some thing i'd normally pass to the SP
set @var2 = 'something else id pass to the SP'

SELECT * 
FROM table 
WHERE id = @var1 
OR textcolumn = @var2
然后我会处理查询(因为它比示例中的查询复杂得多),直到我把它弄对为止,或者我会用变量的值替换它们,因为它们在查询体中被使用了100次,这需要大量的重新键入

所以我的问题是如何让它在MySQL的查询浏览器中工作。

我知道它只执行高亮显示的任何语句(光标位于该行或文本块上)。我想我明白“开始交易”按钮应该用在某种程度上,但我不能让它去。这是我到目前为止所拥有的

DELIMITER $$

begin
declare var1 varchar(1) default 'W';
  select count(*) from gamestatspitchers where wls = var1;
end$$

delimiter ;

谢谢你的帮助。我似乎无法解决这个问题

使用脚本选项卡而不是结果集选项卡怎么样?通过这种方式,您可以执行多条语句。

通常,MySQL查询浏览器将为从查询选项卡执行的每条语句使用单独的连接。这包括自动提交语义。这意味着,如果您
将一条记录插入表中,那么一旦您的语句完成,连接到同一服务器的所有其他客户端都可以立即看到新记录

如果点击“启动事务”按钮,则情况会有所不同。只要不点击“回滚”或“提交”按钮,您在该查询选项卡中所做的一切都将在一个事务中完成

要尝试此操作,请同时连接两个客户端,至少一个客户端是查询浏览器。在另一个客户机中,假设存在这样一个表,则执行一个
从testtable
中选择COUNT(*)

现在,在查询浏览器中点击“开始事务”按钮。将新记录插入testtable。不要点击提交按钮,而是在同一个查询浏览器中,从testtable执行相同的
选择COUNT(*)。您将看到一个比另一个客户端中的值高一个的值,因为此
SELECT
与您刚才执行的
INSERT
处于同一事务中。 在另一个客户机中重新执行
SELECT
,并查看您仍然获得相同的值,因为您还不能看到未提交的
INSERT

在查询浏览器中,现在点击“提交”按钮,第三次在另一个客户端中重新运行
SELECT
。现在您也将看到增加的行数

我还没有尝试过使用变量,但我认为这应该也很好


希望有帮助

用分号分隔查询,如下所示:

SELECT  @var1 := 17, @var2 := 'somethingelse';
SELECT  @var1, @var2;
当您将光标放在查询上时,该查询将突出显示

然后只需按Ctrl-Enter
,即可执行您想要执行的查询


每个选项卡都保留自己的会话,因此执行第一个查询后,
@var
的值将保持定义状态。您可以根据需要多次重新运行第二个查询。

看起来我想要的并不是真的可能。我只使用了两个选项卡—一个脚本选项卡编辑查询,一个结果选项卡调用查询。它可以工作,但在这方面并不像MSSQL查询分析器那么简单

问得好!。我也希望看到这个问题的答案。脚本选项卡不允许您查看选择的结果。澄清一下:只有先按下“开始事务”按钮,这才是正确的。只有这样,第二条语句才会显示变量的赋值!否则,第二个查询将把oth返回为NULL。
@Daniel Schneller
:不,它不是真的。变量是会话绑定的,而不是事务绑定的。试试看。这就是我在评论之前所做的。请看这里:这里:您的
MySQL
设置或
querybrowser
设置有些奇怪。我刚刚检查了两台机器和三个
MySQL
实例,它在任何地方都可以正常工作。你能发布你的
MySQL
版本并尝试在命令行客户机上复制它吗?我只是做了D Schneller做的,得到了同样的结果。第一个查询给出结果。。。。第二个查询提供空值。打开txn,两者都给出结果。古怪的我见过当您使用“@”时,它们被称为“会话变量”。哦,好吧。也许QB正在使用ctrl-enter启动和停止会话。