Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   ayuda con variables (http://www.forosdelweb.com/f86/ayuda-con-variables-607006/)

K-SuMa 17/07/2008 21:57

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:ojotes::ojotes::ojotes:

gnzsoloyo 18/07/2008 05:00

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.

K-SuMa 18/07/2008 22:56

Respuesta: ayuda con variables
 
Cita:

Iniciado por gnzsoloyo (Mensaje 2496633)
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).

gnzsoloyo 19/07/2008 17:06

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 ;


K-SuMa 20/07/2008 17:28

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"

gnzsoloyo 20/07/2008 20:27

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?

K-SuMa 22/07/2008 06:43

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


Salu2

gnzsoloyo 22/07/2008 07:24

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.


La zona horaria es GMT -6. Ahora son las 08:19.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.