FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Función en SQL para retornar valor
Hola amigos del foro, como yo puedo ejecutar una función hecha en una base de datos, la cual me retorna un valor y como puedo obtener ese valor en Delphi.
Gracias de antemano a todos. |
#2
|
||||
|
||||
¿Informas, confirmas o preguntas?
|
#3
|
|||
|
|||
Pregunto, ya que no se ejecutarlo desde delphi.
|
#4
|
||||
|
||||
Tu pregunta es muy genérica, ¿a qué te refieres con "función"?, ¿un query desde delphi?, ¿un store procedure en la base de datos?, ¿de qué base de datos estamos hablando?, etc.
Deberías explicar detalladamente lo que necesitas, porque podemos adivinar, cierto, pero sería eso, adivinar. Recuerda leer nuestra guía de estilo, por favor, gracias. |
#5
|
|||
|
|||
Disculpa, estoy hablando de SQL 2000, en la misma se pueden definir funciones por el usuario, de esas son las que estoy hablando, las que se programan en el mismo SQL. Te pongo un ejemplo hipotético, yo hago una función para sumar dos valores y retornar ese resultado. Esa función la programo en la sección "Funciones definidas por el usuario" de la base de datos en SQL. Ahora, ¿como yo ejecuto esa función desde Delphi para recuperar el valor que ella me devuelve?.
|
#6
|
||||
|
||||
Cita:
__________________
Dulce Regalo que Satanas manda para mi..... |
#7
|
|||
|
|||
Hola oscarac, mi problema es el siguiente, yo solo conozco para ejecutar procedimientos almacenados los componentes de ADO, y estos solo devuelven tipo recordset, yo necesito que el valor devuelto no sea del tipo recordset, yo he estado investigando y no he encontrado otros componentes para esto que no sean los de ADO. Te pongo un ejemplo sencillo, yo ejecuto un consulta en SQL en un procedimiento almacenado que me devuelve un valor entero (cantidad de articulos), ¿como lo obtengo en Delphi?.
|
#8
|
||||
|
||||
lo que se me ocurre es que definas una variable en delphi y que la pases como parametro al SP, luego el resultado lo asignas a esa variable
__________________
Dulce Regalo que Satanas manda para mi..... |
#9
|
|||
|
|||
Cita:
estos son ejemplos de lo que se pudiera retornar. Gracias. |
#10
|
||||
|
||||
Te contesto al menos a una de las preguntas que haces.
Buscas en goole por SQLSERVER function y la primera entrada te da la sintaxis de cómo se realiza una función que devuelve un entero. a partir de ahí, ya tienes para investigar. Para recoger el valor desde Delphi, en los componentes ADO tienes el componente TADOStoredProc. Lo sueltas en el formulario, le indicas el store procedure, le indicas qué parámetros tienes, y lo ejecutas. Atención que los parámetros tendrás que revisar si son de entrada o de salida ( input ó output). Espero que te sirva. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#11
|
||||
|
||||
Es lo mismo que una SQL normal y corriente,
eje.: Función ya definida como MySuma(X, Y) El resultado seria 13. Con ADO:
Espero que te sirva Un saludo. |
#12
|
|||
|
|||
Cita:
Te pregunto, al parámetro @Salida se le puede asignar el valor así?, al ejecutar el programa Delphi me da el siguiente error, en Delphi lo hago así:
y la llamada al procedimiento así:
Ahora me sigue la duda, el valor que retorna @Salida como lo recojo en Delphi? Saludos y gracias. |
#13
|
||||
|
||||
La variable @Salida = 'Paso 1' tiene un valor fijo, que quieres que te devuelva lo mismo
La variable @varIdIndicador=@@IDENTITY no tiene ninguna utilidad en tu procedimiento, el @@IDENTITY lo que hace es guardar el valor que ha tomado al añadir el registro, pero nada más. ¿Que quieres que te devuelva el procedimiento, @Salida = 'Paso 1'? |
#14
|
|||
|
|||
Cita:
Gracias. |
#15
|
||||
|
||||
Creo que quieres ir demasiado rápido.
Haz una pequeña prueba de concepto, y cuando la domines, te metes en harina. Por otro lado, las instrucciones with parameters do begin for i:=0 to Length(Nombre)-1 do CreateParameter(Nombre[i], TipoDato[i], Direccion[i], Tamano[i], Valor[i]); end; no son necesarias, ya que estás creando los parámetros. Si asignas la procedure al TADOStoredProc, ya dispones de los parámetros. Sólo tienes que asignarles el valor.
Buano, estoy escribiendo de memoria, pero creo que lo he puesto claro. De todas maneras, crea un proyecto nuevo, tira un TADOStoredProc, asignale la conexión y el SP y mira cómo ya dispones de los parámetros. Prueba a ver y nos cuentas. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#16
|
|||
|
|||
Creo puedes solucionanrlo asi en un TADOQuery en la propiedad SQL pones:
En su propiedad Parameters Listará 3 Los cuqales son (AnoClonar, AnoClonado, Salida), Luego en Delphi lo Llamarias asi: ahi escogemos DataType ftstring para los 3 y solo para el parámetro "Salida" en Direction ponemos pdOutput. Salu2 |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cómo hacer para retornar valores de una Unit a otra | karo | Varios | 6 | 14-03-2009 20:57:28 |
Retornar o no retornar desde un script principal | dec | PHP | 6 | 24-03-2008 23:41:12 |
retornar un valor Proc.Almacenado | cacu | OOP | 1 | 05-03-2008 22:39:16 |
Como retornar un valor en Delphi | Stanley | Varios | 8 | 29-10-2007 04:04:03 |
Exite función para asignar otro valor si es null | JavierO | Varios | 6 | 04-08-2005 18:22:56 |
|