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

pasar provedimiento al macenado de MSSQL a MySQL

Estas en el tema de pasar provedimiento al macenado de MSSQL a MySQL en el foro de Mysql en Foros del Web. hola a todos, lo que sucede es que por diversas razones he tenido que migrar una BD de sql server a mysql. ya he migrado ...
  #1 (permalink)  
Antiguo 05/07/2013, 12:56
 
Fecha de Ingreso: enero-2012
Mensajes: 7
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta pasar provedimiento al macenado de MSSQL a MySQL

hola a todos, lo que sucede es que por diversas razones he tenido que migrar una BD de sql server a mysql.

ya he migrado todas mis tablas, pero problema que me a impedido completar esta migracion son los provedimientos almacenados.

en sql server ya tenia yo 3 procedimientos almacenados que trabajavan vien, pero al querelos pasar a mysql saltan varios problemas de sintaxis, ya se que esto se debe a las diferencias de plataformas pero dado que soy principiante en mysql
no se que es lo que esta mal.

aqui les dejo el procedimiento almacenado para que lo vean y al pueda darme alguna sugerencia de que esta mal:

Código:
ALTER PROCEDURE sp_create_ordenes 
	-- Add the parameters for the stored procedure here
	(@name1 nvarchar(20))
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
DECLARE @SQLQuery nvarchar(1000);    
-- Consulta de creación tabla
SET @SQLQuery=	N'CREATE TABLE dbo.'+ @name1 +'
(Norden int identity(1,1) not null primary key,
fecha__emicion datetime not null,
proveedor nvarchar(60) not null,
solicitante nvarchar(35) not null,
autorizante nvarchar(35) not null,
emisorId int not null,
sucursal int not null,
status varchar(10) not null,
depar_id int not null,
observacion nvarchar(100) not null,
subtotal numeric(18,2) not null,
iva numeric(18,2) not null,
total numeric(18,2) not null)'
execute sp_executesql @SQLQuery

SET @SQLQuery=	N'CREATE TABLE dbo.'+ @name1 +'_detalles
(id int identity(1,1) not null primary key,
Norden int not null,
cantidad numeric(18,4) not null,
unidad nvarchar(4) not null,
descripcion nvarchar(70) not null,
precio_unitario numeric(18,2) not null,
importe numeric(18,2) not null)'
execute sp_executesql @SQLQuery

END
por si se preguntan que hace esta cosa, pues le dire que crea un par de tabla con el nombre que yo proporcione y basicamente los otros 2 procedimientos son de lo mismo.
  #2 (permalink)  
Antiguo 05/07/2013, 13:38
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: pasar provedimiento al macenado de MSSQL a MySQL

:P
Crear tablas dinámicamente...

Personalmente no es algo que vea funcional ni en SQL Server, pero si así te gusta...

Como sea, lo que quieres hacer es crear una sentencia preparada, y eso se hace de otra forma. La diferencia es muy grande.

http://dev.mysql.com/doc/refman/5.0/es/sqlps.html

Un caso de ejemplo:
http://creativapixel.com/blog/senten...acenado-mysql/

el primer consejo que te podemos dar es que cuando cambies de DBMS, vayas directamente al manual de referencia, y leas cada cosa, porque los cambiuos entre uno y otro (más allá de que sea a MySQL) son brutales.

Ahora bien, si ya has leido el manual de referencia de MySQL, entonces es probable que haya cosas que no te hayan quedado claras en cuanto a diferencias entre ambos DBMS. Eso lo podemos ver, pero por lo pronto:
- SET NOCOUNT ON, no existe en MySQL.
- La "@" no se usa en los parámetros de entrada de un SP.
- No existe una forma de ejecutar sentencias contenidas en cadenas sin una sentencia preparada.
- Para crear una sentencia preparada se debe usar PREPARE, tal como explica el manual, y luego debe destruirse.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 05/07/2013 a las 14:42

Etiquetas: mssql, select, sql, tabla
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 00:25.