SQL Stored Proc question

Ask a Question related to Coldfusion Database Access, Design and Development.

  1. #1

    Default SQL Stored Proc question

    I have a rather large cfquery slowing me down. i can build simple stored procs
    but I dont know anything advanced.

    Can you take a cfquery like this

    <cfquery name="getname" datasource="dsn">
    SELECT name, address, zipcode, city, state,etc,etc,etc
    FROM users
    WHERE 0=0
    <cfif form.name IS NOT "">AND name = '#form.name#'</cfif>
    <cfif form.zipcode IS NOT "">IN zipcode =
    '#form.zipcode#'</cfif>
    <cfif form.cityIS NOT "">IN city = '#form.city#'</cfif>
    </cfquery>

    I have like 15 if's in trhe statement. Is this feasible in SQL stored procs or
    will it actually hurt performance more?

    Swd1974 Guest

  2. Similar Questions and Discussions

    1. Simple Stored Proc Question
      I have a simple stored procedure that returns text. CREATE PROCEDURE sactest AS PRINT 'SAC was here' GO Question: How do I capture the...
    2. cfc and stored proc
      does anyone know if there is documentation anywhere that states that in ColdFusion MX 6.1 when you try to pass parameters to a stored procedure via...
    3. ASP vs Stored Proc vs UDF
      Hi all, I have a field in Table A that must be updated whenever a record is added to Table B. Table A will always only contain one single record...
    4. Simple stored proc in query question
      Is this possible? Table_1 Col1 Col2 Col3 a e b f c g UPDATE Table_1 SET Col3 = Some_Stored_Proc...
    5. stored proc and tcp/ip
      Hello, is it possible to communicate with another program using tcp/ip? I mean, i have another program where i know the port number and the...
  3. #2

    Default Re: SQL Stored Proc question

    Hi SWD1974,

    Moving data-centric actions into the data bubble makes good sense. If you
    migrate your SQL statement to an SP, you'll realize some performance gains,
    clean up your code, and put the heavy lifting where it belongs.

    Given your example, (and using MS SQL), you could create an SP:

    CREATE PROCEDURE gensp_GetUsers
    @p_vusername varchar(64),
    @p_vzipcode varchar(12),
    @p_vcity varchar(64)

    AS
    declare @l_vSQL varchar(2048) -- adjust for size up to 8000 if necessary
    set @l_vSQL = 'SELECT name, address, zipcode, city, state,etc,etc,etc
    FROM users
    WHERE 0=0 '
    IF @p_vusername <> ''
    set @l_vSQL = @l_vSQL + 'AND [name] IN ('''+@l_vusername+''')'
    IF @p_vzipcode <> ''
    set @l_vSQL = @l_vSQL + 'AND zipcode IN ('''+@l_vzipcode+''')'
    IF @p_vcity <> ''
    set @l_vSQL = @l_vSQL + 'AND city IN ('''+@l_vzipcode+''')'
    --etcetcetc
    exec(@l_vSQL)

    and call it with CFSTOREDPROC.

    SQL caches the plan for the SP execution, so after the first run, the
    performance is markedly superior to issuing an ad hoc query.

    HTH,


    philh Guest

  4. #3

    Default Re: SQL Stored Proc question

    OK, crow eaten here. Constructing dynamic SQL does nothing for performance
    gain (as has been pointed out so pointedly by Joe Celso et al.) But you should
    still come up with a parameterized SP and let the DB do the lifting.

    Mea culpa, mea culpa,....

    philh Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139