Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con variables

Estas en el tema de ayuda con variables en el foro de Mysql en Foros del Web. hola todos soy relativamente nuevo en el mundo de mysql, mi pregunta es la siguiente: como michi declaro una variable... el manual dice asi declare ...
  #1 (permalink)  
Antiguo 17/07/2008, 21:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 1
Pregunta ayuda con variables

hola todos soy relativamente nuevo en el mundo de mysql, mi pregunta es la siguiente: como michi declaro una variable... el manual dice asi
declare @mivariable tipo;
asi que yo declaro de la siguiente manera
declare @texto varchar(10);
y me sale error
"you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare @mivar varchar(10)' at line 1"
uso mysql 5.0.51b antes usaba la 5.0.12 pero como me salia este error lo actualice... la verdad que ya no se que hacer puesto que necesito hacer consultas usando variables... una consulta mas en mysql existen variables tipo tabla? pf estare al pendiente de su apoyo

Saludos xD
  #2 (permalink)  
Antiguo 18/07/2008, 05:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ayuda con variables

1. En los store procedures, la declaración no requiere el arroba (@), ésta se usa como variable directamente:
Código:
DECLARE variable INT;

SET @var1 = 0;
Las variables con arroba se usan en las sentencias preparadas, y en aquellas que deben contener valores que se usarán como nombres de campo.
Por caso, si envias un string con el nombre de una tabla, para usarlo lo debes transverir a una variable @nombreVariable antes.

2. En MySQL no existen variables de tipo TABLE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/07/2008, 22:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: ayuda con variables

Cita:
Iniciado por gnzsoloyo Ver Mensaje
1. En los store procedures, la declaración no requiere el arroba (@), ésta se usa como variable directamente:
Código:
DECLARE variable INT;

SET @var1 = 0;
Las variables con arroba se usan en las sentencias preparadas, y en aquellas que deben contener valores que se usarán como nombres de campo.
Por caso, si envias un string con el nombre de una tabla, para usarlo lo debes transverir a una variable @nombreVariable antes.

2. En MySQL no existen variables de tipo TABLE.
me sigue saliendo el mismo error sobre la declaracion de variables. y si no declaro la variable no me almacena el valor asignado anteriormente... la consulta que quiero hacer la hago de esta manera en mssql server

CREATE PROC SP_FACT_ABONADO (@TELEFONO VARCHAR(10))
AS
DECLARE @LINEA BIGINT
SELECT @LINEA=NUMLINEA FROM FACT_CL18_200806
WHERE CONTAINS (TXT_FACT, @TELEFONO)

SELECT TXT_FACT FROM FACT_CL18_200806
WHERE NUMLINEA BETWEEN (@LINEA-6) AND (@LINEA+54)
GO

La tabla solo tiene 2 columnas, ya que la data que me pasan es de un texto plano con los datos de las facturas tal como saldria impresa (un txt con informacion no normalizada, donde se sepera una factura de otra x una cantidad determinada de lineas).
  #4 (permalink)  
Antiguo 19/07/2008, 17:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ayuda con variables

1. Recuerda, por favor, que no estás trabajando en SQL Server. Estás programando un SP en MySQL, lo que significa que no puedes usar codigo propio de SQL Server, ni tampoco las extensiones que Microsoft le agrega al ANSI SQL-99.
2. Entre las cosas que te olvidaste van:

a) No pusiste el fin de linea en NINGUNA línea. En este caso es el mismo de Oracle: punto y coma (;).
b) No prestaste atención a lo que te dije: En los SP de MySQL la variable que se declara NO LLEVA el arroba (@), puesto que son variables de procedimiento. Si usas variables con arroba es porque las estás creando dinámicamente al y tiene existencia dentro de la conexión. Esas se las denomina variables de usuario.
El tema es que si vas a psar de un motor a otro, te recomiendo que antes de intentar hacer SP, funciones, triggers o incluso tablas e índices, leas con atención el manual de referencia, especialemten las partes concernientes a la sintaxis y a los tipos de datos.
Código:
DELIMITER $$

DROP PROCEDURE IF EXISTS SP_FACT_ABONADO $$
CREATE PROCEDURE SP_FACT_ABONADO (TELEFONO VARCHAR(10))
BEGIN
DECLARE LINEA BIGINT;

SELECT NUMLINEA INTO LINEA FROM FACT_CL18_200806
WHERE CONTAINS (TXT_FACT, TELEFONO);

SELECT TXT_FACT FROM FACT_CL18_200806
WHERE NUMLINEA BETWEEN (LINEA-6) AND (LINEA+54);

END $$

DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 20/07/2008, 17:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: ayuda con variables

gnzsoloyo, se que no estoy trabajando bajo SQL Server, por eso indique que de esa manera lo hago en SQL Server, es por eso que no puse los demilitores de linea y obviamente le puse la arroba a las variables ademas del AS y el GO, para q se hagan una idea de lo que quiero hacer, se que la sintaxis son diferentes entre el mysql y el sql server... bueno ejecute la sentencia tal como me indicas pero ahora me sale el siguiente error "YOU TRIED TO EXECUTE AN EMPTY STRING. PLEASE TYPE AN SQL COMMAND INTO THE SQL EDIT FIELD AND EXECUTE AGAIN"
  #6 (permalink)  
Antiguo 20/07/2008, 20:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ayuda con variables

En principio, ese mensaje solamente aparece cuando estás ingresando una sentencia de MySQL en alguna interfase y el renglón que estás tratando de ejecutar no tiene nada escrito.
Lo que te puse es un script que, o lo ingresas renglón a renglón en la consola DOS de MySQL, o lo ejecutas desde un archivo, o lo haces correr desde una pagina de script, como en el caso de MySQL Query Browser.
¿Qué interfase estás usando para ejecutar esto?
¿Usas la consola, MySQL Query Browser, phpMyAdmin, o alguna otra aplicación?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 22/07/2008, 06:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: ayuda con variables

Ah ya!!!... mira yo uso el MySQL Query Browser... voy a probarlo como me indicas y lo pruebo...


Salu2
  #8 (permalink)  
Antiguo 22/07/2008, 07:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ayuda con variables

Si usas el Query Browser, tiene un menú para editar directamente los SP y las funciones (Script>Create store procedure / function). Te crea un script con el código base y el nombre, y sólo tienes que llenar el cuerpo.
Además, al ejecutarlo, lo compila y te avisa de los errores que encuentre.
No te olvides de hacerlo con la base de datos seleccionada. Es fundamental.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:09.