 |
|
|
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
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!!!
|
 |
|
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!!!!
|
 |
|
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.
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
|