Chiamare una scalar-valued function da Visual Basic 6 con Ado 2.x

Mettiamo di avere nel nostro database una scalar-valued function cosi’ definita

CREATE FUNCTION [dbo].[fnFaiCoseConMessaggio]
(
-- Stringa da spezzare a meta’
@MsgDaProcessare varchar(255)
)
RETURNS float
AS
BEGIN
-- Declare the return variable here
DECLARE @Result varchar(255)

-- fa tutta una serie di cose con il messaggio iniziale
-- ….
SET @Result = @MsgDaProcessare
-- ….

-- ritorna il risultato dell’elaborazione
RETURN @Result
END

Di seguito il codice per poter chiamare la scaled function da Visual Basic 6, utilizzando ADO

Dim varValore As Variant
Dim strNomeComando as String
Dim objCommand As ADODB.Command
Dim objRs As ADODB.Recordset

Set objCommand = New ADODB.Command
objCommand.ActiveConnection = 'mettere qui la connessione da usaer
objCommand.CommandTimeout = 'mettere qui il timeout del comando, facoltativo
objCommand.CommandType = adCmdText

'sintassi SQL da utilizzare
strNomeComando = "SELECT dbo.fnFaiCoseConMessaggio(?) As AlsRitorno"

objCommand.CommandText = vstrComando
objCommand.Parameters.Append objCommand.CreateParameter("MsgDaProcessare", adVarChar, adParamInput, 255, “Il mio messaggio da gestire”)

'lancia la funzione scalare
Set objRs = objCommand.Execute

'recupera i valori dal recordset
Do While Not objRs.EOF
varValore = Trim(objRs.Fields(“AlsRitorno”).Value)
objRs.MoveNext
Loop

'chiude il recordset della lettura
objRs.Close
Set objRs = Nothing
Set objCommand = Nothing

'in varValore ho adesso il valore di ritorno

Tutto abbastanza semplice. L’unica accortezza e’ utilizzare un parametro, invece di inserire direttamente il valore della stringa, visto che in presenza di caratteri strani tipo apostrofo o altri, la stringa SQL darebbe errore. Cosi’ facendo, invece, viene tutto gestito nel migliore dei modi.

Leave a Reply