Trabajando con una base de datos Oracle 9i desde una aplicación ASP.NET 2.0 (VB) usando OLEDB. ¿Hay alguna manera de hacer que una declaración de inserción devuelva un valor? Tengo una secuencia configurada para numerar las entradas a medida que ingresan a la base de datos, pero necesito que ese valor regrese después de la inserción para poder manipular el conjunto que acabo de ingresar en el VB con código subyacente.Devuelve un valor de una instrucción de inserción
Respuesta
Algunas posibilidades:
1) el uso de la cláusula de Regreso:
INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS')
RETURNING empno INTO :variable;
2) Usar el CURRVAL secuencia:
INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS');
SELECT emp_seq.CURRVAL INTO :variable FROM DUAL;
CURRVAL devuelve el último valor de secuencia generado por tu sesión
Si este valor es la clave que crea la base de datos, ha encontrado un buen ejemplo de por qué debe usar UUID como clave de tabla y generarlos en código.
Este método le dará un rendimiento más rápido en su configuración.
Oracle parece tener un keywod llamado "regresar" que puede devolver una columna dada de la fila insertada, sin embargo eso puede requerir que configure manualmente el campo "autoincrement" invocando el siguiente valor en su secuencia.
Marque esta discusión al respecto:
http://forums.oracle.com/forums/thread.jspa?threadID=354998
Sin embargo, siempre se puede seleccionar el número de secuencia actual en una segunda consulta, algo así como MySQLs last_insert_id()
primer lugar, utilice un SELECT declaración para obtener la siguiente secuencia. Puede usar the Oracle dual table para hacer esto.
SELECT my_seq.nextval FROM dual
utilice la secuencia que recuperó en posteriores INSERT declaraciones.
INSERT ...
INSERT ...
- 1. No se puede anidar una instrucción de inserción de inserción
- 2. instrucción MySQL que devuelve una instrucción SQL?
- 3. iSeries DB2: ¿hay alguna manera de seleccionar el valor de identidad de una instrucción de inserción?
- 4. ¿Cómo se devuelve una constante de una instrucción sql?
- 5. ¿Cómo `({...})` devuelve un valor?
- 6. valor de inserción mediante XSLT
- 7. ¿Devuelve un valor Y lanza una excepción?
- 8. Devuelve más de un valor de una función en Java
- 9. Insertar más de un registro con una sola instrucción de inserción
- 10. SPContext.Current.Web.CurrentUser devuelve un valor engañoso
- 11. Devuelve el valor de un código Java
- 12. Inserción de un valor en un árbol ordenado en Haskell
- 13. Patrón de comando - devuelve un valor
- 14. Registry.LocalMachine.OpenSubKey() devuelve un valor nulo
- 15. Macro que devuelve un valor
- 16. Rails 3, instrucción de inserción SQL personalizada sin formato
- 17. Método de hilo C# ¿devuelve un valor?
- 18. Subprocess.poll() devuelve un valor falsamente
- 19. ¿Cómo agregar una cláusula where en una instrucción de inserción de MySQL?
- 20. ¿Cómo uso una cláusula OUTPUT de una instrucción INSERT para obtener el valor de identidad?
- 21. Punto de inserción (geometría) Valor en PostgreSQL con JDBC
- 22. ¿Es necesario encapsular una única instrucción de combinación (con inserción, eliminación y actualización) en una transacción?
- 23. Cómo evitar la inserción de registros duplicados al utilizar una instrucción de combinación de T-SQL
- 24. @@ IDENTIDAD después de la instrucción INSERT siempre devuelve 0
- 25. Acceso al valor devuelto de una instrucción SQL en SQLCMD
- 26. inserción combinar (valor y seleccionar)
- 27. C++ volver valor sin instrucción de retorno
- 28. SQL: actualiza una fila y devuelve un valor de columna con 1 consulta
- 29. ¿Cómo realmente devuelve una función por valor?
- 30. Oracle - Devuelve el valor de clave recién insertado
Hola Tony, ¿Esto también es aplicable para SQL Server? Necesito lo mismo para SQL Server 2008 R2. –
@Sujay, lo siento, no sé SQL Server pero vea http://bytes.com/topic/sql-server/answers/83675-return-primary-key-insert-statement –
Gracias por su ayuda. Pero no estoy buscando un procedimiento almacenado. –