¿Cómo declaro una variable de sesión en PL/SQL, una que persistirá solo durante la sesión, sin tener que almacenarla en la base de datos?PL/SQL: ¿Cómo declaro las variables de sesión?
Respuesta
Crea una variable de nivel de paquete. Este es un ejemplo mínimo:
CREATE OR REPLACE PACKAGE my_package
AS
FUNCTION get_a RETURN NUMBER;
END my_package;
/
CREATE OR REPLACE PACKAGE BODY my_package
AS
a NUMBER(20);
FUNCTION get_a
RETURN NUMBER
IS
BEGIN
RETURN a;
END get_a;
END my_package;
/
Si usted hace esto, usted debe leer sobre (y manejar correctamente) ORA-04068
errores. Cada sesión de base de datos tendrá su propio valor para a. Puede probar esto con:
SELECT my_package.get_a FROM DUAL;
Puede utilizar un 'contexto creado por el usuario' para almacenar datos compartidos a través de múltiples unidades en una sesión.
En primer lugar, crear un contexto:
CREATE CONTEXT SYS_CONTEXT ('userenv', 'current_schema')|| '_ctx' USING PKG_COMMON
En segundo lugar, crear un paquete que administrar su contexto:
CREATE OR REPLACE PACKAGE PKG_COMMON
IS
common_ctx_name CONSTANT VARCHAR2 (60)
:= SYS_CONTEXT ('userenv', 'current_schema')
|| '_ctx';
FUNCTION fcn_get_context_name RETURN VARCHAR2;
PROCEDURE prc_set_context_value (var_name VARCHAR2, var_value NUMBER);
END;
CREATE OR REPLACE PACKAGE BODY PKG_COMMON
IS
FUNCTION fcn_get_context_name
RETURN VARCHAR2
IS
BEGIN
RETURN common_ctx_name;
END;
PROCEDURE prc_set_context_value (var_name VARCHAR2, var_value NUMBER)
IS
BEGIN
DBMS_SESSION.set_context (common_ctx_name, var_name, var_value);
END;
END;
El prc_set_context_value puede ser más avanzada, eso es sólo un ejemplo. Con el contexto y el paquete creado, puede comenzar a usarlos. establecer una variable de contexto mediante una llamada a procedimiento
begin
PKG_COMMON.prc_set_context_value('MyVariable', 9000)
end;
y utilizarlo en cualquier lugar - cualquier procedimiento, paquete, función o evento una vista.
CREATE VIEW V_TEST AS
SELECT ID, LOGIN, NAME
FROM USERS
WHERE ROLE_ID = SYS_CONTEXT(PKG_COMMON.FCN_GET_CONTEXT_NAME, 'MyVariable')
Para más información ver http://www.psoug.org/reference/sys_context.html
- 1. ¿CÓMO unitar las variables de sesión de sesión en PHP?
- 2. Las variables de sesión se pueden engañar (inicio de sesión)?
- 3. Ver las variables de la sesión php
- 4. ASP.NET - Desaparecer las variables de sesión
- 5. ¿Cómo declaro y uso variables dinámicas en javascript?
- 6. cómo despejar las variables de sesión en Symfony2
- 7. ¿Cómo elimino o elimino las variables de sesión?
- 8. cómo obtener las variables de sesión usando la identificación de la sesión
- 9. Variables de sesión de ColdFusion
- 10. ¿Cómo configuro las variables de sesión al iniciar sesión usando django-registration y auth?
- 11. variables de sesión vs variables locales
- 12. ¿Qué tan seguras son las variables de sesión de PHP?
- 13. Cómo establecer las variables de sesión en las pruebas de integración de Rails
- 14. mejores prácticas en nombrar las variables de sesión
- 15. ¿pueden los usuarios cambiar las variables de sesión?
- 16. ¿Es posible eliminar todas las variables de sesión, excepto algunas?
- 17. R - ¿cómo declaro un vector de Fecha?
- 18. Variables de sesión de ASP a ASP.NET
- 19. Reflexión en PLSQL?
- 20. variables de sesión de asp.net en Session_End
- 21. ¿Cómo declaro y uso variables en PL/SQL como lo hago en T-SQL?
- 22. Colecciones de concatenación en PLSQL
- 23. Seleccionar de PLSQL Matriz asociativa?
- 24. ¿Cómo puedo hacer que la tablilla ignore dónde declaro mis variables?
- 25. ¿Cómo declaro un arrays de cadenas 2D?
- 26. Hackeando variables de sesión en Asp.NET
- 27. Variables estáticas en las sesiones
- 28. Mantenimiento de variables de sesión en subdominios
- 29. Variables de sesión de PHP no conservadas
- 30. ColdFusion cliente vs variables de sesión
Cuando creo contexto que dice: ORA-28265: Espacio de nombres que empiezan por 'sys_' no está permitido. Traté de establecerlo en variable. Pero establece el nombre de la variable en lugar del valor –