MySQL查询浏览器-使用变量
我习惯了MSSQL的查询分析器。我需要为一个爱好项目转换一些SP,在转换到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
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启动和停止会话。