Pregunta: | 63086 - @@IDENTITY EN MYSQL |
Autor: | Pitu Seculi |
Hola buenas tardes!! De primeras deciros que muchas gracias por leerme aunque no podais ayudarme ;)
Estoy migrando un programa hecho en PB + Sybase a PB + MySQL. He conseguido solucionar todos los problemas que me ha dado, pero ahora me encuentro un poco estancado. Resulta que en muchos sitios (versión Sybase) hace la siguiente consulta: SELECT @@identity INTO :variable FROM dummy; Ahora quiero simular esto con MySQL. Según he visto, esto lo que hace es recuperar el ultimo ID insertado en un registro. He leido que equivale al LAST_INSERT_ID() de MySQL, pero PB se queja al usar esta instrucción ya que me dice que no lo reconoce (que no está declarada). En otro sitio he leido que yendo a la datawindow y especificando la columna "Identity Column" ya funcionaría, pero no es lo que me interesa. El código que tengo que pasar a MySQL es: --> (...) INSERT INTO poblacion (pob) VALUES (:sPob); if SQLCA.SQLCode = 0 then SELECT @@identity INTO :lCodPob FROM dummy; if SQLCA.SQLCode = 0 then INSERT INTO codigo_postal (codpos, codpob) VALUES (:sCodPos, :lCodPob); if SQLCA.SQLCode = 0 then SELECT @@identity INTO :lCodIde FROM dummy; if SQLCA.SQLCode = 0 then dsCodPos.Retrieve() SetItem(lFila, "codideper", lCodIde) end if end if end if end if (...) <-- Alguien sabe como puedo hacer esto mismo en MySQL y PB 5.0?? ya sé que es una versión antigua, pero es la que usan aquí... Muchísimas gracias!! :) |
Respuesta: | Daniel Rodas |
Hola Por si aun te sirve, te sugiero que utilices Stored Procedures y allí en la base de datos hagas todo tu proceso y en power solo llames a un SP principal que contenga los demas. Tendrias que poner parametros de retorno en tus SP para que al final en la llamada hagas un fetch y captures el valor que deseas y hagas el retrieve y luego el setitem (por cierto te conviene mejor cambiar el setitem por: dsCodPos.object.codideper[lFila] = lCodIde) Saludos |