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.

