|
111
|
Programación / .NET (C#, VB.NET, ASP) / Re: llenar list(of oracleparameter) a partir de una clase
|
en: 21 Septiembre 2015, 14:37 pm
|
investigue un poco mas, hice algunas modificaciones, pero al ejecutar el executenonquery el error dice "El objeto debe estar abierto" y creo que se refiere a la conexion, aunque la conexion si funciona para el select, les dejo la modificacion y el ejecuta query Public Function EjecutaSql(ByVal spName As String, ByVal tienda As clstienda) As Integer Dim row As Integer Try con = New ConectDatos Dim listaParam As List(Of OracleParameter) = New List(Of OracleParameter) Dim param1 As OracleParameter = New OracleParameter("id_", OracleDbType.Int32) param1.Value = tienda.getid listaParam.Add(param1) Dim param2 As OracleParameter = New OracleParameter("tienda_", OracleDbType.Varchar2) param2.Value = tienda.getnombre listaParam.Add(param2) Dim param3 As OracleParameter = New OracleParameter("direccion_", OracleDbType.Varchar2) param3.Value = tienda.getdireccion listaParam.Add(param3) Dim param4 As OracleParameter = New OracleParameter("tel_", OracleDbType.Int32) param4.Value = tienda.gettel listaParam.Add(param4) Dim param5 As OracleParameter = New OracleParameter("gerente_", OracleDbType.Varchar2) param5.Value = tienda.getgerente listaParam.Add(param5) Dim param6 As OracleParameter = New OracleParameter("desc_", OracleDbType.Varchar2) param6.Value = tienda.getdesc listaParam.Add(param6) row = con.EjecutarQuery(spName, listaParam) Return row Catch ex As Exception Throw New Exception("Error al generar Consulta " + ex.Message.ToString) End Try End Function '******** '/////////// Public Function EjecutarQuery(ByVal spName As String, ByVal parameters As List(Of OracleParameter)) As Integer Dim cmd As OracleCommand Dim row As Integer 'List(Of OracleParameter) Try Using conexion() conexion.Open() cmd = New OracleCommand(spName, conexion) If Not parameters Is Nothing Then cmd.CommandType = System.Data.CommandType.StoredProcedure For Each p In parameters cmd.Parameters.Add(p) Next End If row = cmd.ExecuteNonQuery() Return row End Using Catch ex As Exception Throw New ArgumentException("No se logro ejecutar la consulta en la DataBase " + ex.Message.ToString) End Try End Function
|
|
|
112
|
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
|
|
|
113
|
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
|
|
|
115
|
Programación / Bases de Datos / Re: capturar el nombre de usuario que hace un insert
|
en: 16 Septiembre 2015, 17:46 pm
|
si, lo de los log's ya esta, y mediante los trigger puedo saber sobre si es update, insert o delete, de lo que he investigado encontre una query, pero yo cree un usuario y me conecte, probe la query pero las credenciales que me salen son las de mi maquina, y lo que necesito son las credenciales del usuario para deducir responsabilidades SELECT rtrim(UPPER(sys_context('USERENV','OS_USER'))) username, rtrim(UPPER(sys_context('USERENV','TERMINAL'))) userterminal FROM dual
|
|
|
116
|
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
|
|
|
117
|
Programación / Programación C/C++ / Re: Arreglos y Cadenas de caracteres AYUDA
|
en: 5 Septiembre 2015, 04:28 am
|
¿El fichero a leer es cualquiera al azar? o ¿El fichero fue escrito con una estructura? de la primera forma, se necesita crear una funcion que lea los caracteres y los vaya agrupando y guardando en un arreglo, y despues comparar if(isalpha()); ///***/// if(strcmpy(cadena1,cadena2)) cont++;
ahora para la segunda forma seria tal vez con un doble fread(); comparando lo que va leyendo
|
|
|
118
|
Programación / Programación C/C++ / Re: retomar bucle for con valores globales
|
en: 2 Septiembre 2015, 18:18 pm
|
es solo simulacion y no he utilizado threads, esto es para comprender como se manejan las interrupciones y funcionamiento segun los algoritmos de dekker, al final encontre una solucion al problema p1.acumulador=p1.acumulador+1000;
al principio asignaba lo que tenia i pero no se porque razon no corria bien
|
|
|
119
|
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
|
|
|
120
|
Programación / Programación C/C++ / numeros aleatorios con rand
|
en: 30 Agosto 2015, 16:52 pm
|
hola a todos, deseo comprender una linea de codigo que me dieron, es de numeros aleatorios con rand numero=rand() % 100 + 1 <= 50 ? 1 : 2;
entiendo la parte que dice que el numero sera entre 1 y 100, pero ya no entiendo donde es menor o igual a 50, entre 1 y 2 agradezco su orientacion
|
|
|
|
|
|
|