InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
SQL
  Tutorial SQL
SQL Server
  Tutorial de Transact-SQL
ORACLE
  Tutorial PL/SQL
.NET
  Introducción a.NET
  Conceptos generales .NET
  Tutorial C#
  LinQ
  WCF
Reina Roja
  Humor
  Bibliografia
  Acerca de ...

Afiliados
La Web del programador
MundoProgramacion

Store Procedure
tema iniciado porSistemas en ASP.NET
Mensaje recibido el [28/05/2008 11:35:30]


Que tal, como han estado?!!!

        Sigo trabajando con C# y Oracle, el proveedor de datos es .NET Framework Data Provider for Oracle, Ahora el problema que tengo es como enviar y recibir los parametros de entrada y salida del procedimiento almacenado, tengo 4 parametros que debo enviar al procedimiento y debo obtener el valor de 6 parametros de  salida, no se como obtenerlos desde C# para mostrar cada dato en un textbox, ya estoy desesperada!!!!!!!

          Espero con ansia una respuesta!!!

    Gracias!!!!!!!!!!!


 RE: Store Procedure por aldeamedia [28/05/2008 12:47:51]
 RE: Store Procedure por aldeamedia [29/05/2008 03:28:32]
 RE: Store Procedure por Sistemas [30/05/2008 09:31:50]
 RE: Store Procedure por Sistemas [20/06/2008 03:20:12]
 RE: Store Procedure por Sistemas [30/06/2008 03:53:14]
 RE: Store Procedure por Devjoker [30/06/2008 05:13:54]
 RE: Store Procedure por Sistemas [03/07/2008 03:27:06]
 RE: Store Procedure por Sistemas [10/07/2008 09:36:28]
 RE: Store Procedure por Sistemas [04/08/2008 08:59:01]
 RE: Store Procedure por Sistemas [21/08/2008 10:10:45]
 RE: Store Procedure por aldeamedia [21/08/2008 12:57:26]

 
RE: Store Procedure por aldeamedia
Respuesta recibida el [28/05/2008 12:47:51]
Para trabajar con los parametros del procedimiento necesitas crear objetos de tipo

oracleProvider.OracleParameter miParametro = New oracleProvider.OracleParameter ("@nombreParametro");


miParametro.Value=ValorEntrada
Comando.Add (miParametro)

Y para leer los de salida primero cierra la conexión y accede a la propiedad Value del objeto parametro.

De todas formas no hace falta que abras un nuevo tema cada pregunta, con responder a este vale

 
RE: Store Procedure por aldeamedia
Respuesta recibida el [29/05/2008 03:28:32]
Algo así:
(está con SQL pero espero que te sirva, ojo que faltan cosas como abrir la conexión pero debería valer como ejemplo)

SqlConnection1 = New System.Data.SqlClient.SqlConnection
SqlCommand1 = New System.Data.SqlClient.SqlCommand

SqlConnection1.ConnectionString = "workstation id=CPUIE0209;packet size=4096;integrated security=SSPI;data source=CP" & _
"UIE0209;persist security info=True;initial catalog=Northwind"

SqlCommand1.CommandText = "dbo.[Sales by Year]"
SqlCommand1.CommandType = System.Data.CommandType.StoredProcedure
SqlCommand1.Connection = SqlConnection1

'en dos lineas el @nombre debe coincidir con el escrito en el SP
'el nombre de la variable de tipo parametro no.
Dim parametroFechaInicio As New System.Data.SqlClient.SqlParameter("@Beginning_Date", System.Data.SqlDbType.DateTime, 8)
SqlCommand1.Parameters.Add(parametroFechaInicio)

'en una linea
SqlCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))

SqlCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Ending_Date", System.Data.SqlDbType.DateTime, 8))
'ahora le doy valor a los parametros

'por nombre parametro
SqlCommand1.Parameters("@Beginning_Date").Value = "1/1/2000"
'por posición del parametro
SqlCommand1.Parameters(1).Value = "1/1/2100"

'ejecuto

Dim reader As SqlClient.SqlDataReader
reader = SqlCommand1.ExecuteReader()

'ahora accedo a los parametros de tipo Output o return value
reader.Close()
SqlConnection1.Close()

Dim resultado As Integer
resultado = SqlCommand1.Parameters("@RETURN_VALUE").Value


'forma rápida de programar le paso los parametros en el command
'(no hace falta especificar el comandType (si declarar y abrir la conexión)
SqlCommand1.CommandText = "dbo.[Sales by Year] '1/2/200' , '1/2/2100'"
reader = SqlCommand1.ExecuteReader()

 
RE: Store Procedure por Sistemas
Respuesta recibida el [30/05/2008 09:31:50]

   Hola!!!

    Ya pude resolver mi problema, pasa que no usaba la propiedad value, pero les dejo un pedazo de codigo por si a alguien mas le interesa como hacer con Oracle

                                      //Se llama al procedimiento remoto
                OracleCommand query = new OracleCommand("REMOTO", conn);
                query.CommandType = CommandType.StoredProcedure;

                                        //Envio 2 parametros              
                query.Parameters.Add("INO", OracleType.VarChar);               
                query.Parameters["NO"].Value = clave;
               
                query.Parameters.Add("NOMBRE", OracleType.VarChar);
                query.Parameters["INOMBRE"].Value = nombre;               

                                      //Obtengo 3 parametros de salida

                query.Parameters.Add("OEDAD", OracleType.Int32);
                query.Parameters["OEDAD"].Direction = ParameterDirection.Output;

                query.Parameters.Add("OPROMEDIO", OracleType.Float);
                query.Parameters["OPROMEDIO"].Direction = ParameterDirection.Output;

                query.Parameters.Add("OSEMESTRE", OracleType.Int32);
                query.Parameters["OSEMESTRE"].Direction = ParameterDirection.Output;

                  //Abro mi DB, ejecuto el procedimiento remoto y cierro la DB

                conn.Open();
                OracleDataReader dr = query.ExecuteReader();               
                conn.Close();

                      //Envio los valores de los parametros de salida a textbox

                txtClave.Text = clave;
                txtNom.Text = Nom;
                txtEdad.Text = query.Parameters["OEDAD"].Value.ToString();
                txtProm.Text = query.Parameters["OPROMEDIO"].Value.ToString();
                txtSem.Text = query.Parameters["OSEMESTRE"].Value.ToString();

      El detalle que tenia era que no podia obtener los valores, pero esa es la forma.

                Gracias por su ayuda!!!!

Y claro, no iniciare otro tema para mis otras dudas!!!   GRACIAS!!!!


 
RE: Store Procedure por Sistemas
Respuesta recibida el [20/06/2008 03:20:12]

Hola!!!

     Ahora tengo una duda que llevo ya un par de dias buscando la forma de solucionar, pero la verdad es que no he podido. Necesito leer un campo tipo BLOB de una tabla, mmm... esos datos binarios representan datos que no tiene nada que ver con imagenes, solo he encontrado como leer imagenes de campos tipo BLOB. Ademas necesito mostrar esa informacion, por tanto debo convertirla a string, pero no se como.

 Espero su ayuda, GRACIAS!!!

 [1] 

 
RE: Store Procedure por Sistemas
Respuesta recibida el [30/06/2008 03:53:14]

Una vez mas su ayuda POR FAVOR!!!

 No he podido encontrar la manera de como leer esos datos de tipo BLOB de Oracle, he buscado informacion a mas no poder y todo me lleva a lo mismo, lo cual he probado  pero no consigo el resultado que deseo que es mostrar los datos binarios de un campo BLOB de una tabla de Oracle, esos datos no estan vinculados con Imagenes sino que son datos relacionados con caracteristicas de productos.Deseo mostrar los datos tipo string. Alguna idea?

   Gracias!!!!

 [1] 

 
RE: Store Procedure por Devjoker
Respuesta recibida el [30/06/2008 05:13:54]

Debes saber primero como se han guardado los datos.

Tiene el paquete de sistema dbms_blob para trabajar con blob en ORACLE, pero si no sabes si lo que guarda el blob es XML o video dificilmente podrás usar la información.

Si lo que quieres es representar una secuencia de bytes (anda leche!esto es un blob) como string, puedes usar el algoritmo base64.

En C# tienes la clase Convert que implementa los metodos necesarios para trabajar con base64.

Saludos, DJK


 
RE: Store Procedure por Sistemas
Respuesta recibida el [03/07/2008 03:27:06]

Hola! que tal?

    Antes que nada GRACIAS POR LA AYUDA!!!!, en parte me fue de gran ayuda por que me dio mas opciones de solucion al problema.

   Despues de tanta desesperacion, logre leer el campo tipo blob, que no guarda imagenes sino caracteres. Quiza sea sencillo para algunos, pero la verdad para otros nos cuesta mas trabajo. Por si a alguien le sirve ahi les dejo las lineas de código.

OracleCommand query2 = new OracleCommand("SELECT * FROM tabla", conn);

conn.Open();

OracleDataReader dr2 = query2.ExecuteReader();

dr2.Read();

Byte[] blob = new Byte[dr2.GetBytes(7, 0,null,0,int.MaxValue)];

dr2.GetBytes(7, 0, blob, 0, blob.Length);

conn.Close();

   //Muestra el contenido en TextBox multilinea

TextBox1.Text += System.Text.ASCIIEncoding.ASCII.GetString(blob);

        Algunos de los datos que se leen son 76, 105, 110, 101  en el textbox se tiene la conversion de estos numeros ASCII a string, lo cual visualiza "Line".

 Saludos!!!!


 
RE: Store Procedure por Sistemas
Respuesta recibida el [10/07/2008 09:36:28]

Hola !!!  TREEVIEW

    Estoy de regreso con un nuevo problema, resulta que ahora tengo problemas con un TreeView. Inicialmente el Treeview esta collapsado, cada padre tiene al menos 2 hijos y cada hijo tiene link a una pagina diferente, lo que pretendo hacer es que cuando yo de click en alguno de los hijos, el padre quede expandido y el hijo seleccionado, consigo eso dando valores estaticos pero, siempre, siempre se hace postback, siempre se selecciona el mismo hijo, aunque la pagina de redireccion si me la respeta; este es el codigo que tengo:

protected void Page_Load(object sender, EventArgs e){

     if (!Page.IsPostBack){

          node = "1.1";          //Siempre entra aqui

          TreeNodeCollection nodes = TreeViewSMD.Nodes;

          RecorrerTreeView(nodes);}       //Llamada a funcion recursiva

      else{

          node = TreeViewSMD.SelectedNode.Value;

          TreeNodeCollection nodes = TreeViewSMD.Nodes;

          RecorrerTreeView(nodes);

      }

}

private void RecorrerTreeView(TreeNodeCollection Nodos){

      foreach (TreeNode Nodo in Nodos){

          if ((Nodo.Value == node))

               Nodo.Selected = true;

          else

               RecorrerTreeView(Nodo.ChildNodes);

          }

}

          Como puedo evitar el postback???, he buscado info pero no encuentro una solucion.

           Una vez mas GRACIAS!!!!


 
RE: Store Procedure por Sistemas
Respuesta recibida el [04/08/2008 08:59:01]

Hola!!!!

       Alguien sabe la respuesta de la pregunta anterior?, como se puede evitar el postback en un TreeView que tiene redireccion cada nodo a un pagina, y que al clikerar en el nodo se quede seleccionado. Aun no he encontrado la solucion al problema, alguien puede ayudarme?

          Gracias!!!!


 
RE: Store Procedure por Sistemas
Respuesta recibida el [21/08/2008 10:10:45]

Hola!!!

   Alguien sabra el dato de cuantas filas soporta un gridview? Asi como excel soporta 65 536 filas, y el gridview cuantas?

   Gracias!!!


 
RE: Store Procedure por aldeamedia
Respuesta recibida el [21/08/2008 12:57:26]
Para evitar (o mitigar) el postback intenta buscar algún control de AJAX.

Y en cuanto al limite del gridview como las muestras de poco en poco el limite es lo que estés dispuesto a esperar que se cargue la página con tantas filas.


 

Email:*
Alias:*
Título:*
Respuesta:*
Notificar:
(Indica si queremos recibir emails)

 
 

devjoker  Te recomendamos además ...
17/07/2006 Tipo VARRAY    forma parte de...Tutorial PL/SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
29/05/2006 J2EE Y .NET: LA RIVALIDAD PERMANENTE
22/10/2005 Indices    forma parte de...Tutorial SQL
21/07/2007 Insertar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
28/06/2006 Triggers en PL/SQL    forma parte de...Tutorial PL/SQL
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
19/10/2005 Una clase sencilla para encriptar cadenas
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]