Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - d91

#111
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
Código (vbnet) [Seleccionar]

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
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
Código (vbnet) [Seleccionar]

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
Bases de Datos / ver tablespace de cada usuario
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
Código (sql) [Seleccionar]
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
#114
logre solucionar concatenando directamente
Código (sql) [Seleccionar]
user
#115
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
Código (sql) [Seleccionar]
select
rtrim(upper(sys_context('USERENV','OS_USER'))) username,
rtrim(upper(sys_context('USERENV','TERMINAL'))) userterminal
from dual
#116
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
¿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
Código (cpp) [Seleccionar]

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
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
Código (cpp) [Seleccionar]
p1.acumulador=p1.acumulador+1000; al principio asignaba lo que tenia i pero no se porque razon no corria bien
#119
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
Código (cpp) [Seleccionar]

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
hola a todos, deseo comprender una linea de codigo que me dieron, es de numeros aleatorios con rand
Código (cpp) [Seleccionar]
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