|
61
|
Programación / .NET (C#, VB.NET, ASP) / capturar exception en .net
|
en: 5 Octubre 2015, 05:06 am
|
hola a todos, solo quiero que me orienten de como capturar una excepcion que dispara oracle y que es una cadena, no las he podido controlar con el codigo de visual basic.net porque de la forma en que lo hago retornaria una cadena y la funcion donde tengo el try catch retorna un entero si la ejecucion es normal public function ejecutasql() as integer try 'todo_bien en la consulta return 1 Catch ex As OracleException Return "Error al generar Consulta" & ex.ToString End Try
tambien he probado con esta otra pero igual no me controla la excepcion sino que de una vez me detiene la ejecucion Catch ex As OracleException Throw New ArgumentException("Error al generar consulta " & ex.Message.ToString) End Try
|
|
|
62
|
Programación / Bases de Datos / quitar privilegios en oracle
|
en: 5 Octubre 2015, 04:26 am
|
hola, estoy trabajando con oracle desde una aplicacion en .net, desde la app creo un usuario y le doy privilegios, y desde la misma app le tengo que quitar esos privilegios, en la creacion y dar privilegios no hay problema pero al momento de quitarlos da este error ORA-01031: insufficient privileges
la linea de codigo que ejecuto en el procedimiento almacenado es este EXECUTE immediate 'Revoke create session FROM '||nombre;
el privilegio que estoy quitando es para que ya no se pueda conectar a la base de datos, lo unico es que al hacerlo desde la consola no hay problema, aunque lo hago con el mismo usuario que es propietario de algunas tablas y que tiene privilegios de DBA
|
|
|
63
|
Programación / Bases de Datos / mejorar la concatenacion de elementos segun opciones
|
en: 30 Septiembre 2015, 01:39 am
|
hola a todos, estoy trabajando el prototipo de un procedimiento almacenado en Oracle, desde la aplicacion en .net me envian cuales opciones fueron marcadas(por lo menos marcaron una) y las tengo que concatenar porque es para dar privilegios a un nuevo usuario, encontre una solucion pero veo que es muy extensa, tal vez me ayudan con otra idea para hacerlo mas pequeño y mas optimo SET serveroutput ON DECLARE priv1 NUMBER(2); priv2 NUMBER(2); priv3 NUMBER(2); priv4 NUMBER(2); privilegios varchar2(512); cadena varchar2(1000); BEGIN priv1:=1;--privilegio de insert priv2:=1;--privilegio de update priv3:=0;--privilegio de delete priv4:=1;--privilegio de select IF priv1 > 0 THEN privilegios:='INSERT'; END IF; IF priv2 > 0 AND privilegios IS NOT NULL THEN privilegios:=privilegios||','||'UPDATE'; END IF; IF priv2 > 0 AND privilegios IS NULL THEN privilegios:='UPDATE'; END IF; IF priv3 > 0 AND privilegios IS NOT NULL THEN privilegios:=privilegios||','||'DELETE'; END IF; IF priv3 > 0 AND privilegios IS NULL THEN privilegios:='DELETE'; END IF; IF priv4 > 0 AND privilegios IS NOT NULL THEN privilegios:=privilegios||','||'SELECT'; END IF; IF priv4> 0 AND privilegios IS NULL THEN privilegios:='SELECT'; END IF; cadena:='grant '||privilegios||' on '||' tab_estudiante '||' to '||' my_usuario'; dbms_output.put_line(cadena); END;
|
|
|
64
|
Programación / .NET (C#, VB.NET, ASP) / caracter invalido para realizar query
|
en: 29 Septiembre 2015, 00:55 am
|
hola a todos, estoy tratando de llenar un datagrid con una consulta directa con sql a oracle, pero el error indica que el query tiene caracteres invalidos, lo raro es que ya ejecute otro query que tambien tiene caracteres parecidos y no dio error, habra alguna forma de evitar este error ya probe poniendo comillas y /o concatenando SELECT name FROM v$sysstat WHERE VALUE > 0 ORDER BY name;
el error creo que es por el caracter $ que tiene, pero el query que ya me funciono es SELECT * FROM v$sgastat;
estas consultas son para ver memoria y consultar el hitratio
|
|
|
65
|
Programación / .NET (C#, VB.NET, ASP) / Pagina que hereda clase
|
en: 27 Septiembre 2015, 03:29 am
|
hola a todos estoy tratando de implementar user control, pero hice una clase llamada pagina base, donde cada vez que se cargue una pagina se verifiquen variables de session para cargar el user control, pero la pagina por defecto hereda de system.web.ui.page y no hay herencia multiple en visual basic, por lo que necesito que esta pagina herede la clase pagina_base, pero si quito lo que hereda por defecto la pagina no funciona, agradezco sus comentarios Public Class inciso3 Inherits System.Web.UI.Page
|
|
|
66
|
Programación / .NET (C#, VB.NET, ASP) / agregar linea en blanco a un dropdownlist
|
en: 24 Septiembre 2015, 14:35 pm
|
hola a todos, estoy llenando un dropdownlist desde un procedimiento almacenado con un dataset, solo que al cargarlo aparece el primer item, por lo que necesito que al cargar aparezca un espacio vacio y despues los items, lsttabla.DataSource = tabla.empleados lsttabla.DataValueField = "CODE" lsttabla.DataTextField = "NAME" lsttabla.DataBind()
y aqui la parte del metodo que estoy llamando Dim ds As DataSet Try con = New ConectDatos Dim listaParam As List(Of OracleParameter) = New List(Of OracleParameter) Dim param1 As OracleParameter = New OracleParameter("ResCursor", OracleDbType.RefCursor) param1.Direction = ParameterDirection.Output listaParam.Add(param1) ds = New DataSet ds = con.getdataset("USP_CARGA_EMPLEADO", listaParam) Return ds
|
|
|
67
|
Programación / .NET (C#, VB.NET, ASP) / llenar list(of oracleparameter) a partir de una clase
|
en: 20 Septiembre 2015, 20:47 pm
|
hola, estoy construyendo un pequeño proyecto con visual basic.net y oracle con store procedure, ya he visto algunos ejemplos para hacerlo en capas, lo unico que en los ejemplos esta lista se llena de manera estatica porque son procedimientos de select, pero necesito hacer un insert pero no se como recorrer la clase que la he recibido como objeto les dejo el procedimiento que si funciona pero es estatica con la lista y la que tengo que implementar Public Function SelectEmple(ByVal spName, ByVal IntIdTienda As Integer) As DataSet Dim ds As DataSet Try con = New ConectDatos Dim listaParam As List(Of OracleParameter) = New List(Of OracleParameter) Dim param1 As OracleParameter = New OracleParameter("IntIdTienda", OracleDbType.Int32) param1.Value = IntIdTienda listaParam.Add(param1) Dim param2 As OracleParameter = New OracleParameter("ResCursor", OracleDbType.RefCursor) param2.Direction = ParameterDirection.Output listaParam.Add(param2) ds = New DataSet ds = con.getdataset(spName, listaParam) Return ds Catch ex As Exception Throw New ArgumentException("Error cursor USP_CARGA_EMPLEADOS" + ex.ToString) End Try End Function '***************************** '***************************** Public Function EjecutaSql(ByVal spName As String, ByVal entidad As Object) As Integer con = New ConectDatos Dim row As Integer Dim i As Integer Dim listaParam As List(Of OracleParameter) = New List(Of OracleParameter) 'Dim param1 As OracleParameter 'i = 0 ' 'For Each p As Object In entidad 'param1 = New OracleParameter(entidad(i++), OracleDbType.Int32) ' listaParam.Add(param1) ' Next row = con.EjecutarQuery(spName, listParam) Return row End Function
agradezco de antemano la orientacion
|
|
|
68
|
Programación / Bases de Datos / ver tablespace de cada usuario
|
en: 18 Septiembre 2015, 03:04 am
|
hola a todos, necesito ver los tablespace asignados a cada usuario en oracle a traves de un procedimiento almacenado, pero al compilar el procedimiento dice que la tabla o vista no existe, lo raro es que si ejecuto solo el select en la consola si me los muestra porque tengo los permisos necesarios CREATE OR REPLACE PROCEDURE usp_ver_tablespace(ResCursor IN OUT SYS_REFCURSOR) IS BEGIN OPEN ResCursor FOR SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS; END;
ya hice tambien el procedimiento para ver los todos los usuarios y este si me funciono
|
|
|
69
|
Programación / Bases de Datos / capturar el nombre de usuario que hace un insert
|
en: 16 Septiembre 2015, 15:01 pm
|
hola a todos, estoy trabajando un proyecto en Oracle relacionado a transacciones, pero me piden que al realizar un insert, delete, update, guarde en una bitacora el nombre de usuario que lo realizo, tipo de operacion y la tabla que se realizo, pero no se si se hace con un select a algunas de las tablas V$ de oracle o es al sistema en si, para capturar y meterlo en un cursor, agradezco su orientacion
|
|
|
70
|
Programación / Programación C/C++ / retomar bucle for con valores globales
|
en: 2 Septiembre 2015, 16:56 pm
|
Hola a todos, estoy intentando simular el algoritmo dekker 1 (alternancia estricta), llamo al proceso 1, y su seccion_critica inicia el bucle for empieza corriendo bien pero al retomar el bucle for despues de la primera interrupcion ya no lo realiza, el for deberia llegar a 7000 porque aumento el acumulador de los procesos struct PCB{ int id; //id del proceso char nombre[16];//nombre int tareas_iniciales; //duracion de las tareas iniciales int duracion; //cuanto durara el proceso int quantum; //contador de interrupciones int acumulador;//valor antes de la interrupcion }; PCB p1; PCB p2; void crear_procesos(){ /***********************************/ p1.id=1; // RELLENA DATOS A LAS strcpy(p1.nombre,"PWRDVD"); // ESTRUCTURAS p1.duracion=7000; // DE TIPO PCB p1.quantum=0; // p1.acumulador=0; // // p1.tareas_iniciales=2000; // P1 ES PARA PROCESO1 // p2.id=2; // strcpy(p2.nombre,"DVDRIPPER");// P2 ES PARA PROCESO2 p2.duracion=7000; // p2.quantum=0; // p2.acumulador=0; // // p2.tareas_iniciales=2000; /*****************************/ } int seccion_critica(int id){ cout<<"\nSeccion Critica: Proceso "<<id; if(id==1){ for(int i=p1.acumulador; i<=p1.duracion; i=i+1000){ p1.acumulador=i; if(i==3000||i==6000||i==9000){ return 1; /*** ENTRO AL BUCLE DEL QUANTUM ***/ Sleep(2000); break; } //if }//for }//if principal else{ for(int i=p2.acumulador; i<=p2.duracion; i=i+1000){ p2.acumulador=i; if(i==3000||i==6000||i==9000){ return 1; /*** ENTRO AL BUCLE DEL QUANTUM***/ Sleep(2000); break; } //if }//for }//else Sleep(2000); }
la interrupcion se da a los 3000 lo cual si funciona, se interrumpe pero como es alternancia estricta regresa hacia la seccion_critica porque no ha terminado, en teoria la siguiente seria en 6000, pero despues de la primera interrupcion se vuelve a llamar a la sección critica del proceso 1 pero el ciclo for ya no hace nada solo se inicia en 3000 pero ya no sigue contando, aunque p1.duracion sigue siendo 7000, agradecere sus aportes
|
|
|
|
|
|
|