Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 17-jul-2008, 21:57   #1 (permalink)
K-SuMa ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
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
K-SuMa está desconectado   Responder Citando
Antiguo 18-jul-2008, 05:00   #2 (permalink)
gnzsoloyo tiene algunos puntos positivos de karma
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 722
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.
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Antiguo 18-jul-2008, 22:56   #3 (permalink)
K-SuMa ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
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).
K-SuMa está desconectado   Responder Citando
Antiguo 19-jul-2008, 17:06   #4 (permalink)
gnzsoloyo tiene algunos puntos positivos de karma
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 722
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 ;
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Antiguo 20-jul-2008, 17:28   #5 (permalink)
K-SuMa ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
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"
K-SuMa está desconectado   Responder Citando
Antiguo 20-jul-2008, 20:27   #6 (permalink)
gnzsoloyo tiene algunos puntos positivos de karma
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 722
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?
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Antiguo 22-jul-2008, 06:43   #7 (permalink)
K-SuMa ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2007
Mensajes: 13
Respuesta: ayuda con variables

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


Salu2
K-SuMa está desconectado   Responder Citando
Antiguo 22-jul-2008, 07:24   #8 (permalink)
gnzsoloyo tiene algunos puntos positivos de karma
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 722
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.
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 03:16.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93