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

TFDQuery.Prepare não pode determinar tipos de parâmetros para consulta INSERT no MS SQL SERVER


Eu seguiria a ajuda aqui e evitaria ligar para Prepare antes que os parâmetros sejam definidos (seus tipos de dados são totalmente especificados). Você não perdeu nada além desta nota de ajuda:

Para drivers ODBC comuns (você ainda está falando com um driver ODBC, não importa se ele usa OLE DB internamente para se comunicar com o DBMS), o FireDAC não determina os tipos de dados de parâmetro para o comando preparado. Em vez disso, ele prepara a instrução de comando no DBMS de destino e tenta vincular os existentes do Params coleção. É assim que o Preparar é implementado (Tóquio).

A API ODBC fornece o SQLDescribeParam função para obter detalhes do parâmetro para o comando preparado, mas FireDAC não o usa em nenhum lugar (neste momento). Em vez disso, ele deixa a coleta de parâmetros de construção manualmente. O que não está errado, pois no final é o desenvolvedor que precisa saber qual valor atribuir a um determinado parâmetro de comando para conhecer esse tipo de valor.