![]() |
Problemas con Store Procedure Hola a todos!!! Soy un principiante en .NET y como tengo mucha fuerza de voluntad me asignaron la tarea de armar una base de datos de personal en SQL que sea visualizada desde el Browser por los usuarios. Hasta ahi todo bien... El problema es que necesito enviar a un Store Procedure el número de Legajo de una persona y obtener varios datos de la misma como respuesta Desde ya muchas gracias a todos!!!:neurotico :neurotico |
aqui esta una clase muy completa para manejo de conexiones a la bd y tambien soporta procedimientos almacenados. ahi esta el codigo de ejemplo tambien para descargar. http://www.dotnetcr.com/index.aspx?I...clase-conexion a los admins si gustan pueden poner el ejemplo en los faqs del sitio. |
que milagro que andas por aqui royrojas :arriba:, en cuanto a tu ejemplo no se ve mal la implementación que tienes aunque como comentario se puede optimizar todavía más ya que no hay manejo de caching en objetos, y en vez de usar los nombres de los tipos (if, then, etc) se pueden trabajar directamente con interfaces, etc, es por ello que te recomiendo que te bajes el Enterprise Library de microsoft y le heches un ojo al de datos para que veas a lo que me refiero. Cita:
Saludos y cualquier comentario será bienvenido |
si hace tiempo que no entraba aqui, realmente tengo poco tiempo libre. claro que se puede optimizar mas, pero vamos poco a poco, no se van a tirar todas las monedas en la primera jugada. hay que ir demostrando los avances del codigo, por eso es que vamos asi. |
Hola motinuza, Encontré esto que quizá te sirva: http://www.codeproject.com/aspnet/MyDbViewerSite.asp Si no tienes unas especificaciones muy concretas claro. Saludos. |
Les agradezco a todos pero no entiendo. Tal vez por ser nuevo en el tema no expresé mis dudas correctamente. Acá les mando el Store Procedure y el ASPX a ver si me pueden dar una mano. Sigo obteniendo un solo parametro de salida y NO 2 o mas como necesito. Gracias nuevamente! CREATE procedure GetlastName_Gus2 @LEGAJO_PERSONAL varchar (7), @nombres varchar (20) output, @apellido varchar (20) output as select @nombres =nombres, @apellido = apellido from personal where LEGAJO_PERSONAL = @LEGAJO_PERSONAL GO ************************************************** ************** <%@ Page Language="VB" %> <%@ import Namespace="System.Data.SqlClient" %> <%@ import Namespace="System.Data" %> <% Dim conPubs As SqlConnection Dim cmdLastName As SqlCommand Dim parmLastName As SqlParameter Dim parmLP As SqlParameter Dim strLastName As String conPubs = New SqlConnection( "Server=localhost;database=PERSONAL_DE_COMUNICACIO NES;Integrated Security=SSPI") cmdLastName = New SqlCommand( "GetlastName_Gus2", conPubs ) cmdLastName.CommandType = CommandType.StoredProcedure ' Parametro de entrada del LP cmdLastName.Parameters.Add( "@LEGAJO_PERSONAL", "20557" ) ' Parametro de salida del Nombre parmLastName = cmdLastName.Parameters.Add( "@Nombres", SqlDbType.Varchar ) parmLastName.Size = 40 parmLastName.Direction = ParameterDirection.Output ' Parametro de salida del Apellido parmLastName = cmdLastName.Parameters.Add( "@Apellido", SqlDbType.Varchar ) parmLastName.Size = 40 parmLastName.Direction = ParameterDirection.Output ' Ejecuta el Comando conPubs.Open() cmdLastName.ExecuteNonQuery() ' Recupera el valor de salida del Parametro If Not IsDBNull( cmdLastName.Parameters( "@Apellido" ).Value ) Then strLastName = cmdLastName.Parameters( "@Nombres" ).Value Else strLastName = "DESCONOCIDO !!!" End If conPubs.Close() %> El apellido es <%=strLastName%> |
la cuestion es que solo estás creando un solo objeto parámetro y debes crear uno por cada uno que necesites haciendo unos pequeños ajustes a tu código quedaría de la siguiente forma: Cita:
|
GRACIAS!, Pero me sigue tirando UN resultado, (el nombre) seguro que me estoy equivocando en algo, en definitiva el codigo me quedo asi: CREATE procedure GetlastName_Gus2 @LEGAJO_PERSONAL varchar (7), @nombres varchar (20) output, @apellido varchar (20) output as select @nombres = nombres , @apellido = apellido from personal where LEGAJO_PERSONAL = @LEGAJO_PERSONAL GO ************************************************ <%@ Page Language="VB" %> <%@ import Namespace="System.Data.SqlClient" %> <%@ import Namespace="System.Data" %> <% Dim conPubs As SqlConnection Dim cmdLastName As SqlCommand Dim parmLP As SqlParameter Dim strLastName As String conPubs = New SqlConnection( "Server=localhost;database=PERSONAL_DE_COMUNICACIO NES;Integrated Security=SSPI") cmdLastName = New SqlCommand( "GetlastName_Gus2", conPubs ) cmdLastName.CommandType = CommandType.StoredProcedure ' Parametro de entrada del LP cmdLastName.Parameters.Add( "@LEGAJO_PERSONAL", "20557" ) ' 1er. Parametro de salida, Nombre Dim parmName As New SqlParameter("@Nombres", SqlDbType.VarChar, 40) parmName.Direction = ParameterDirection.Output cmdLastName.Parameters.Add(parmName) ' 2do. Parametro de salida, Apellido Dim parmLastName As New SqlParameter("@Apellido", SqlDbType.VarChar, 40) parmLastName.Direction = ParameterDirection.Output cmdLastName.Parameters.Add(parmLastName) ' Ejecuta el Comando conPubs.Open() cmdLastName.ExecuteNonQuery() ' Recupera el valor de salida del Parametro If Not IsDBNull(parmLastName.Value) Then strLastName = parmName.Value Else strLastName = "DESCONOCIDO !!!" End If conPubs.Close() %> El apellido y el nombre es <%=strLastName%> |
Soy bastante nuevo en esto, pero no puede ser que haya algun problema con el SQL? qUIEN HIZO EL sTORED pROCEDURE? Fijate, quizas el problema venga por ahi... |
cambia ésto: cmdLastName.ExecuteNonQuery() por ésto: Cita:
|
Hay un proyecto gratuito que se llama pachacamaq y que es muy bueno para aprender sobre todo esto que plantearón, hay para VB y Csharp, no recuerdo muy bien el link pero en google poniendo pachacamaq lo encuentran de seguro. |
Gracias Maestros!!!... me salvaron la vida!! |
| La zona horaria es GMT -6. Ahora son las 10:15. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.