Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Restituisce varchar(max) Parametro di output dalla procedura memorizzata che viene troncato a 4000 caratteri

La tua ipotesi sulla stringa di connessione è azzeccata

È necessario utilizzare SQL Server Native Client anziché SQLOLEDB.1 per supportare VARCHAR(MAX) e NVARCHAR(MAX) tipi di dati altrimenti verranno troncati di nuovo in equivalenti SQLOLEDB.

Quindi vuoi utilizzare le seguenti definizioni dei parametri

'For varchar(max) OUTPUT use;
Call cmd.Parameters.Append(cmd.CreateParameter("@detail", adLongVarChar, adParamOutput, -1, strDetail))

'For nvarchar(max) OUTPUT use;
Call cmd.Parameters.Append(cmd.CreateParameter("@detail", adLongVarWChar, adParamOutput, -1, strDetail))

'** Constants **
' adLongVarChar = 201
' adLongVarWChar = 203
' adParamOutput = 2