Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Zurückgeben von varchar(max) Ausgabeparameter von gespeicherter Prozedur, die auf 4000 Zeichen gekürzt wird

Ihre Vermutung bezüglich der Verbindungszeichenfolge ist genau richtig

Sie müssen den SQL Server Native Client anstelle von SQLOLEDB.1 verwenden, um VARCHAR(MAX) zu unterstützen und NVARCHAR(MAX) Datentypen andernfalls werden sie auf ihre SQLOLEDB-Äquivalente zurückgeschnitten.

Sie möchten dann die folgenden Parameterdefinitionen verwenden

'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