¿Cómo puedo almacenar, por ejemplo, el cuerpo de un método en una base de datos y luego ejecutarlo? (Estoy utilizando Delphi XE2, tal vez RTTI ayudaría.)¿Cómo puedo ejecutar código almacenado en una base de datos?
Respuesta
RTTI no es un intérprete de idioma completo. Delphi es un lenguaje compilado. Usted lo escribe, lo compila y distribuye solo sus binarios. A menos que sea Embarcadero, no tiene derecho a distribuir DCC32 (el compilador de línea de comandos).
Sin embargo, el JVCL incluye un subconjunto de lenguaje delphi envuelto en un Componente muy fácil de usar, llamado "JvInterpreter". Podría escribir algún código (como pascal) y colocarlo en una base de datos. Luego puede "ejecutar ese código" (interpretado, no compilado) que extrae de la base de datos. Normalmente, estos deberían ser procedimientos que invocan métodos en su código. Debe escribir algunos "envoltorios" que expongan las API compiladas que desea exponer al intérprete (proporcionar acceso a datos en tiempo real, objetos de conexión de bases de datos u objetos de tabla/consulta). Estás pensando que esto suena perfecto, ¿no? Bueno, es una trampa.
Tenga cuidado con algo llamado "the configuration complexity clock". Acaba de llegar a las 9 en punto, y ahí es donde comienza el dolor y el sufrimiento. Al igual que cuando tienes un problema, y lo resuelves con expresiones regulares, y "ahora tienes dos problemas", agregar scripts y DSL a tu aplicación tiene una forma de resolver un problema y crear muchos otros.
Aunque creo que la idea de "DLL almacenado en un campo de blob de base de datos" es mala y absurda, creo que la adición gratuita de scripting y lenguajes específicos de dominio a las aplicaciones también está causando mucho dolor. Pregúntate primero si alguna otra solución más simple podría funcionar. A continuación, aplique el principio YAGNI (You Is not Gonna Need It) y KISS (keep-it-simple-smartguy).
Piense dos veces antes de implementar algo como lo que está pidiendo hacer en su pregunta.
por favor cite correctamente: KISS = mantenerlo simple estúpido ;-) – dummzeuch
Estoy seguro de que Warren sabe el significado exacto. Suena menos grosero de esta manera. –
Leonardo está captando mi deriva. –
Su mejor opción, en mi humilde opinión, está utilizando un motor de secuencias de comandos y el almacenamiento de scripts en la base de datos.
Alternativamente, podría poner el código en un dll y poner ese dll en la base de datos. Existe un código para cargar un dll de un recurso en ram y procesarlo para que pueda ser utilizado como si se cargara usando LoadLibrary, p. in dzlib. Realmente no sé si funciona con cualquier dll y en qué versiones de Windows, pero lo hace con los que probé.
- 1. ¿Cómo puedo ejecutar el código de Perl almacenado dentro de una variable de script de shell?
- 2. Cómo ejecutar un procedimiento almacenado de Oracle a través de un enlace de base de datos
- 3. ¿Cómo puedo usar un procedimiento almacenado en una base de datos MySql con Zend Framework?
- 4. ¿Cómo puedo ejecutar una operación de base de datos fuera de una transacción en Rails/ActiveRecord
- 5. ¿Ejecutar datos como código?
- 6. ¿Cómo ejecuto PHP que está almacenado en una base de datos MySQL?
- 7. ¿Cómo puedo ejecutar un archivo de texto SQL en una base de datos MySQL?
- 8. ¿Cómo puedo conectarme a una base de datos externa desde una declaración sql o un procedimiento almacenado?
- 9. cómo configurar un procedimiento almacenado para acceder a una tabla en otra base de datos
- 10. ¿Cómo mostrar HTML almacenado en una base de datos desde una vista ASP.NET MVC?
- 11. Procedimiento almacenado en la base de datos H2
- 12. Probar el procedimiento almacenado sin afectar la base de datos
- 13. ¿Cómo ejecutar la base de datos H2 en modo servidor?
- 14. Cómo descargar un archivo almacenado en una base de datos con JSF 2.0
- 15. Usar la base de datos dentro de un procedimiento almacenado
- 16. ¿Cómo puedo crear una base de datos PostgreSQL en Java?
- 17. ¿Cómo puedo crear una base de datos sqlite en memoria?
- 18. Ejecutando el código almacenado como una lista
- 19. Dos aplicaciones, una base de código. ¿Cómo puedo conseguir esto?
- 20. Crear procedimiento almacenado en otra base de datos
- 21. ¿Cómo ejecutar el comando almacenado en una variable?
- 22. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 23. ¿Cómo ejecutar un procedimiento almacenado de Oracle?
- 24. Ejecutar código PHP en una cadena
- 25. ¿Cómo se manejan los cambios en el código de procedimiento almacenado de múltiples aplicaciones usando la misma base de datos?
- 26. Ejecutar procedimiento almacenado en SQL Developer?
- 27. ¿Cómo puedo mantener segura una base de datos mySQL?
- 28. ¿Cómo puedo volcar una base de datos MySQL usando hormiga?
- 29. ¿Cómo puedo crear una base de datos utilizando pymssql
- 30. ¿Puedo/debo ejecutar mi sitio web contra una base de datos SQLite?
Ponga el código en una DLL. –
@DavidHeffernan ¿Y almacena el dll en la base de datos? ;) – GolezTrol
¿Ha considerado usar algún motor de scripts para esta tarea? – Linas