Je me demande s'il existe une meilleure façon de faire ce que je fais. Cela fonctionne mais je pense qu'il devrait y avoir un meilleur moyen. Je reçois « La demande a dépassé la limite de temps admissible Tag: CFQUERY » Si mon résultat de la requête dans 20K enregistrements par exemple,Travailler avec ColdFusion - Boucler une procédure
<cfquery name="GetMyRecords" datasource="MyDSN">
SELECT idnumber,PrefAddr,...more colums
FROM um_valid
WHERE userid = <cfqueryparam cfsqltype="cf_sql_varchar"
value="#session.userid#">
AND session_id = <cfqueryparam cfsqltype="cf_sql_numeric"
value="#session.Session_Id#">
AND status NOT IN (<cfqueryparam cfsqltype="cf_sql_varchar"
value="X,C">)
</cfquery>
J'ai aussi une procédure de stockage existante qui attendent des valeurs de la requête à faire ce qu'il est censé faire. Donc, je suis en boucle comme ceci:
<cfloop query="GetMyRecords">
<cfstoredproc procedure="MyProc" datasource="MyDSN">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR"
dbvarname="@id_number" value="#Trim(idnumber)#">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR"
dbvarname="@Aaddr_pref_ind" value="#Trim(PrefAddr)#">
----- still more params to be passed----
</cfstoredproc>
</cfloop>
Est-ce que ColdFusion a une meilleure technique pour éviter soit le temps d'erreur ou erreur 500?
Je suggère de modifier votre procédure stockée ou d'écrire un nouveau afin que vous n'avez pas à faire des appels de base de données à l'intérieur de cette boucle. –
Comment créer une fonction dans un composant existant et appeler la fonction sur chaque boucle? Est-ce que ça va aider? – MGL
Vous pouvez essayer, mais j'en doute. –