cfqueryparam com lista de valores para a cláusula “IN” do SQL

On 4 de abril de 2012, in CFML, SQL, by andersonstraube

Vamos ver como usar uma lista de valores na cláusula “IN” do SQL utilizando o cfqueryparam do ColdFusion.

Não preciso nem comentar sobre o uso do cfqueryparam, para mim isso é obrigatório por questões de segurança e vários outros fatores.

No código abaixo ele lista os clientes cujo nome está na lista:


<cfquery name="q_Clientes" datasource="#dsn#">
  SELECT 
	*
  FROM 
	clientes
  WHERE 
	nome IN ('Anderson','Maria','João','Zeca')
</cfquery>


A mesma consulta utilizando o cfqueryparam:


<cfset pessoasList = "Anderson,Maria,João,Zeca" />

<cfquery name="q_Pessoas" datasource="#dsn#">
  SELECT 
	*
  FROM 
	pessoas
  WHERE 
	nome IN ( <cfqueryparam value="#pessoasList#" list="true" cfsqltype="cf_sql_varchar" /> )
</cfquery>

Podemos ainda ter uma variação com valores separados por outro delimitador (o padrão é a vírgula), exemplo:


<!--- Aqui separamos nossa lista com o pipe (|) --->
<cfset pessoasList = "Anderson|Maria|João|Zeca" />

<cfquery name="q_Pessoas" datasource="#dsn#">
  SELECT 
	*
  FROM 
	pessoas
  WHERE 
	nome IN ( <cfqueryparam value="#pessoasList#" list="true" separator="|" cfsqltype="cf_sql_varchar" /> )
</cfquery>

Tagged with:  

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *