Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornando varchar(max) Parâmetro de saída do procedimento armazenado truncando para 4000 caracteres


Sua suposição sobre a string de conexão está correta

Você precisa usar o SQL Server Native Client em vez de SQLOLEDB.1 para dar suporte ao VARCHAR(MAX) e NVARCHAR(MAX) tipos de dados, caso contrário, eles serão truncados de volta para os equivalentes SQLOLEDB.

Você então quer usar as seguintes definições de parâmetro
'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