Obtener Resulta de Funcion SQL con DBExpress
Hola amigos buenos días.
Alguien sabe si es posible obtener el resultado de una función de SQL SERVER con DBEXPRESS del Delphi 7, he estado buscando información en los foros y no he encontrado nada lo poco que he encontrado es con ADO, como el sistema todo esta desarrollado con DBEXPRESS es por ello mi necesidad, si alguien sabe si es posible y me puede compartir el componente a usar o la sintaxis se los voy agradecer enormemente. Su amigo Charless |
Puedes ejecutarla dentro de una SELECT (dependiendo del tipo de función) y recoger el resultado de la select de la forma estandard.
|
El problema lo tengo con una función ( Un store procedure de sql server) es un store que genera varios cálculos y al final regresa un valor, quiere ver si con algún componente de dbexpress puedo obtener ese dato, para ejecutarlo no tengo problema lo hago con un tsimpledataset, para obtener el valor de retorno quise hacer esto pero no funciono:
SQLStoredProc1.Name:='validaCION'; SQLStoredProc1.ParamByName('FOLIO').VALUE := folio; SQLStoredProc1.ExecProc; |
Más o menos así (depende de qué tipo sea el campo):
¡¡¡Y no olvides las etiquetas para el código fuente!!! |
Hola.
El problema para nosotros es que desconocemos nombres y tipos de los parámetros que se le deben enviar al procedimiento almacenado, así como también el nombre y el tipo del retorno. No trabajo con MS-SQLServer, pero en líneas generales creo que al componente deberías darle minimamente esos datos. Pongamos, por citar un ejemplo, un stored procedure que realize lo mismo que la función Pos de Delphi: Ese es el modo en que funciona en los RDBMS que he trabajado, así que pienso que también debería hacerlo en MS-SQLServer... Saludos :) |
Ya hice la prueba y me marca que no encuentra el parámetro, esta es la función que espero cachar el resultado que retorna
CREATE FUNCTION [dbo].[VALIDACION] (@FOLIO as varchar(50) ) returns varchar(10) as begin declare @ent as integer, @sal as integer,@resul varchar(10) set @ent = (select count(*) from dbo.entrada WHERE FOLIO=@FOLIO) set @SAL = (select count(*) from dbo.SALIDAS WHERE FOLIO=@FOLIO) set @resul = convert(varchar(10), @ent) +convert(varchar(10), @SAL) return @resul end |
Cita:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Hola a todos,
como ya te ha comentado CASIMIRO NOTEVI, al tratarse de una funcion debes de utilizar un TSQLQuery, el problema lo puedes tener por la forma en que hay que realizar llamadas en MSSQLServer a funciones y procedimientos, prueba este código:
|
Generando una función como esta (que es la misma que la tuya, pero usando una par tablas mías):
Y ejecutrando esta consulta:
Obtienes un único registro con el valor resultado. Para obtenerlo desde Delphi, tal y como han comentado un TQuery (derivado). |
Hola.
Cita:
Una misma función o stored procedure debería poderse llamar desde ambos componentes, ya sea TSQLStoredProc o TSQLQuery con el mismo resultado. Repitiendo el ejemplo anterior, del mismo modo funciona: Para el primer ejemplo usé el TSQLStoredProc ya que ese figuraba en tu intento. Saludos :) |
La franja horaria es GMT +2. Ahora son las 17:33:17. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi