Ir al contenido


Foto

Procedimiento SQL SERVER a FIREBIRD


  • Por favor identifícate para responder
1 respuesta en este tema

#1 fidl117

fidl117

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 24 julio 2013 - 01:58

Saludos amigos, quisiera saber si me pueden ayudar a convertir un SP de SQL SERVER a uno de Firebird, trate de hacerlo pero no me salio o almenos no hace lo que quiero, el SP que quiero es el siguiente:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[loginusuario](@identificacion AS varchar(50),@nombreusuario AS varchar(50))
AS
BEGIN
SELECT id,nombre FROM dbo.usuario WHERE id=@identificacion AND nombre=@nombreusuario
END


yo lo intente en Firebird de la siguiente manera:

SET TERM ^ ;
ALTER PROCEDURE LOGINUSUARIO (
NOMBREUSUARIO Varchar(15),
CONTRASENA Varchar(15) )
RETURNS (
USUARIO Varchar(15),
CONTRASENA_USUARIO Varchar(15) )
AS
DECLARE VARIABLE NUSUARIO VARCHAR(15);
DECLARE VARIABLE NPASS VARCHAR(15);
BEGIN
FOR Select NOMBRE,IDENTIFICACION from USUARIOS where IDENTIFICACION=:CONTRASENA and NOMBRE=:NOMBREUSUARIO
INTO :NUSUARIO, :NPASS DO
SUSPEND;
END^
SET TERM ; ^
GRANT EXECUTE
ON PROCEDURE LOGINUSUARIO TO SYSDBA;


ok se me paso, les comento que desde vb.net se van a loguear y si el usuario existe en la tabla, me dejara ingresar., espero y me puedan ayudar , les dejo el codigo en vb.net

cuando trato de loguearme solo pasa a esta linea:  Label1.Text = "El Usuario no Existe"



delphi
  1. Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim conectar As String = ConfigurationManager.ConnectionStrings("conexion").ConnectionString
  3.         Dim sqlconectar As FbConnection = New FbConnection(conectar)
  4.         Dim cmd As FbCommand = New FbCommand("LOGINUSUARIO", sqlconectar)
  5.         cmd.CommandType = CommandType.StoredProcedure
  6.         cmd.Parameters.Add("@CONTRASENA", FbDbType.VarChar, 10).Value = TextBox2.Text
  7.         cmd.Parameters.Add("@NOMBREUSUARIO", FbDbType.VarChar, 18).Value = TextBox1.Text
  8.         Try
  9.             cmd.Connection.Open()
  10.             Dim dr As FbDataReader = cmd.ExecuteReader
  11.             If dr.Read Then
  12.                 Label1.Text = "Bienvenidos Usuario" & " " & TextBox1.Text
  13.                 Label1.ForeColor = Drawing.Color.DarkGreen
  14.                 FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, False)
  15.             Else
  16.                 Label1.Text = "El Usuario no Existe"
  17.                 Label1.ForeColor = Drawing.Color.DarkRed
  18.             End If
  19.         Catch ex As Exception
  20.             Label1.Text = ex.Message
  21.  
  22.         End Try
  23.         cmd.Connection.Close()
  24.     End Sub


  • 0

#2 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 25 julio 2013 - 04:05

Una funcion que devuelve lo mismo que le pasas... hum, curioso cuanto menos, yo preferiria una funcion que le pases user y pass y te devuelva, por ejemplo, el numero de usuarios que coinciden (1 o 0, claro), pero bueno, si funciona, funciona.

Creo que el problema es que en firebird, en lugar de darle valor a las dos variables de respuesta, metes el resultado en variables temporales, es decir:

SET TERM ^ ;
ALTER PROCEDURE LOGINUSUARIO (
NOMBREUSUARIO Varchar(15),
CONTRASENA Varchar(15) )
RETURNS (
USUARIO Varchar(15),
CONTRASENA_USUARIO Varchar(15) )
AS
BEGIN
FOR Select NOMBRE,IDENTIFICACION from USUARIOS where IDENTIFICACION=:CONTRASENA and NOMBRE=:NOMBREUSUARIO
INTO :USUARIO, :CONTRASENA_USUARIO DO
SUSPEND;
END^
SET TERM ; ^
GRANT EXECUTE
ON PROCEDURE LOGINUSUARIO TO SYSDBA;


NOTA: Ops, las etiquetas de firebird no funcionan! Llamen a un moderador!  *-)
  • 0




IP.Board spam blocked by CleanTalk.