Eu tenho um procedimento armazenado SQLCLR com a seguinte assinatura no Visual Studio 2013:
[SqlFunction(DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)]
public static SqlString ExecSql2Json(SqlString sql)
Ou, alternativamente, tentei:
[SqlFunction(DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)]
public static SqlChar ExecSql2Json(SqlChar sql)
De qualquer forma, o parâmetro e o tipo de retorno são definidos como NVARCHAR(4000)
. Eu gostaria que eles fossem NVARCHAR(MAX)
.
Sei que posso escrever manualmente minha própria CREATE PROCEDURE
declaração para ter um controle refinado. Existe alguma opção em algum lugar para alterar o DDL de implantação gerado pelo SQL Server ou apenas preciso adicionar manualmente um script para descartar e ler o UDF com a assinatura adequada?
Você precisa especificar um
SqlFacet
para o valor de retorno. Isso é o mesmo que especificar umSqlFacet
para um parâmetro de entrada, exceto que você o prefixa comreturn:
Para
(max)
comprimento, useMaxSize=-1
noSqlFacet
atributo, exemplo a seguir:O script T-SQL gerado para esta função SQLCLR é: