2009-10-19 25 views
6

Estoy acostumbrado al Analizador de consultas de MSSQL. Necesitando convertir algunos SP para un proyecto de hobby, estoy teniendo problemas para hacer la transición al buscador de consultas mysql, particularmente cuando se trata de usar variables. En esencia, trato de simular un procedimiento antes de que sea un procedimiento.MySQL Query Browser - utilizando las variables

Así que en el Analizador de consultas que me gustaría escribir algo como esto ...

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 

Luego jugaría alrededor con la consulta (porque es mucho más compleja que el ejemplo uno) hasta que consiguió la derecha , o sustituiría los valores de las variables porque se utilizan como 100 veces en el cuerpo de la consulta y eso implica mucha reescritura.

Así que mi pregunta es cómo hacer que funcione en el buscador de consultas de MySQL.

Entiendo que solo está ejecutando cualquier instrucción que esté resaltada (el cursor está en esa línea o bloque de texto). Y creo que entiendo que el botón "Comenzar transacción" debería usarse de alguna manera, pero no puedo hacerlo funcionar. Esto es lo que tengo hasta ahora

DELIMITER $$ 

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

delimiter ; 

Gracias por cualquier ayuda. Parece que no puedo solucionar esto.

+0

¡buena pregunta !. A mí también me gustaría ver la respuesta a esto. –

Respuesta

0

¿Qué le parece usar una pestaña de script en lugar de una pestaña de conjunto de resultados? De esa forma puedes ejecutar más de una declaración.

+0

Las pestañas de script no le permiten ver los resultados de los SELECT. –

1

Por lo general, MySQL Query Browser utilizará una conexión separada para cada instrucción que ejecute desde una pestaña de consulta. Esto incluye la semántica de confirmación automática. Esto significa que si INSERT registra en una tabla, inmediatamente todos los demás clientes conectados al mismo servidor pueden ver el nuevo registro, una vez que finalice su instrucción.

Si presiona el botón "Iniciar transacción", esto será diferente. Mientras no pulse los botones "Revertir" o "Comprometer", todo lo que haga en esa pestaña de consulta estará en una sola transacción.

Para probar esto, conecte dos clientes al mismo tiempo, al menos uno es el buscador de consultas. En el otro cliente, haga un SELECT COUNT(*) FROM testtable, suponiendo que exista dicha tabla.

Ahora, en el buscador de consultas, presione el botón "Iniciar transacción". Inserta un nuevo registro en la tabla de prueba. Haga no pero presione el botón de confirmación, pero en su lugar, en el mismo navegador de búsqueda, haga lo mismo SELECT COUNT(*) FROM testtable. Verá un valor que es uno más alto que en el otro cliente, porque este SELECT está en la misma transacción que el INSERT que acaba de hacer. Vuelva a ejecutar el SELECT en el otro cliente y vea que todavía obtiene el mismo valor, porque aún no puede ver el INSERT no confirmado.

En el buscador de consultas, ahora presione el botón "Confirmar" y vuelva a ejecutar el SELECT en el otro cliente por tercera vez. Ahora verá el aumento de recuento de filas allí también.

No he intentado usar variables, pero supongo que esto debería funcionar bien también.

Espero que ayude!

2

delimitar las consultas con punto y coma como este:

SELECT @var1 := 17, @var2 := 'somethingelse'; 
SELECT @var1, @var2; 

La consulta se resaltará cuando se pone el cursor sobre ella.

Luego solo presione Ctrl-Enter para ejecutar esta misma consulta que desea ejecutar.

Cada pestaña mantiene su propia sesión, por lo que los valores de @var seguirán definidos después de ejecutar la primera consulta. Puede volver a ejecutar la segunda consulta tantas veces como desee.

+0

Para aclarar: esto solo es cierto, si se presionó primero el botón de inicio de transacción. ¡Solo entonces la segunda declaración mostrará los valores asignados de las variables! De lo contrario, la segunda consulta devolverá oth como NULL. –

+1

'@ Daniel Schneller': No, no es verdad. Las variables están ligadas a la sesión, no a la transacción. Solo inténtalo. – Quassnoi

+0

Eso es lo que hice antes de comentar. Vea aquí: http://picasaweb.google.com/lh/photo/ELAIKb0BCCRw1DC1i2TIMQ?feat=directlink y aquí: http://picasaweb.google.com/lh/photo/47es8mXWyGNNNUBO8mjg9A?feat=directlink –

0

No parece que lo que quiero es realmente posible. Solo estoy usando dos pestañas: una pestaña de script para editar la consulta y una pestaña de resultados para llamarla. Funciona, pero no es tan fácil como MSSQL Query Analyzer para esto.