terça-feira, 25 de maio de 2010

Parametros em Comandos SQL ODBC no ENSEMBLE/Intersystems

Quando uma query ou comando SQL possuir funções no parametro ou mais de uma tabela, pode haver erros na camada ODBC, ocasionada pela impossibilidade de descobrir o tipo de dado dos parametros passados;

 

Para evitar esse erro, pode-se concatenar o parâmetro do comando na string SQL ou usar a seguinte regra:

 

- Criar uma array multidimencional com os tipos de dados descritos abaixo:

  set sql =  " Update tab1 " _

                  " set Codigo = tab2.Codigo " _

                  " from Tabela1 tab1 " _

                  " left outer join Tabela2 tab2 on rtrim(tab2.Usuario) = rtrim(?) and tab2.Status = 'A' " _

                                                                 " where Codigo = ?"

 

  set pParams = 2

  set pParams(1) = pRequest.Usuario

  set pParams(2) = pRequest.Codigo

 

  set pParams(1,"CType") = $$$SqlVarchar

  set pParams(1,"SqlType") = $$$SqlVarchar

 

  set pParams(2,"CType") = $$$SqlInteger

  set pParams(2,"SqlType") = $$$SqlInteger

 

  set rc = ..Adapter.ExecuteUpdateParmArray(.Linhas, sql, .pParams)