Prepared Statements within stored procedures

Ask a Question related to MySQL, Design and Development.

  1. #1

    Default Prepared Statements within stored procedures

    I have a stored proceduren with a prepared statement inside, I would
    like to put the result fields into variables but I donīt know how,
    Should I use some kind of cursor? How can I put the COUNT(*) field into
    a variable at stored procedure scope?

    CREATE PROCEDURE `GetPortability`(p_table VARCHAR(50), p_number
    VARCHAR(50))
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
    BEGIN
    SET @l_sql = CONCAT('SELECT COUNT(*) FROM ',p_table,' WHERE Prefix
    LIKE \'',p_number , '\';');

    PREPARE stmt1 FROM @l_sql;
    EXECUTE stmt1 ;

    DEALLOCATE PREPARE stmt1;
    END;
    Thank you....

    martinacevedo@gmail.com Guest

  2. Similar Questions and Discussions

    1. #40695 [NEW]: odbc_execute/prepared statements does not work with Access
      From: a at bc dot de Operating system: Windows PHP version: 5.2.1 PHP Bug Type: ODBC related Bug description: ...
    2. #40277 [NEW]: BLOB objects are fetched badly via prepared statements
      From: zakirov at rain dot ifmo dot ru Operating system: FreeBSD, Windows PHP version: 5.2.0 PHP Bug Type: MySQLi related Bug...
    3. #36402 [Com]: PDO_MYSQL prepared statements cause Out of memory or data corruption
      ID: 36402 Comment by: ayuzhakov at swsoft dot com Reported By: joh at deworks dot net Status: No Feedback Bug...
    4. Prepared statements in ASP
      I am trying to create a prepared statement in ASP, but am having problems with creating the parameter object. I do the following Set fnParam =...
    5. #6976 [Fbk->Csd]: ibase_query can't execute SQL statements that can't be prepared
      ID: 6976 Updated by: abies@php.net Reported By: mlemos at acm dot org -Status: Feedback +Status: ...
  3. #2

    Default Re: Prepared Statements within stored procedures

    [email]martinacevedo@gmail.com[/email] wrote:
    > I have a stored proceduren with a prepared statement inside, I would
    > like to put the result fields into variables but I donīt know how,
    > Should I use some kind of cursor? How can I put the COUNT(*) field into
    > a variable at stored procedure scope?
    >
    > CREATE PROCEDURE `GetPortability`(p_table VARCHAR(50), p_number
    > VARCHAR(50))
    > NOT DETERMINISTIC
    > SQL SECURITY DEFINER
    > COMMENT ''
    > BEGIN
    > SET @l_sql = CONCAT('SELECT COUNT(*) FROM ',p_table,' WHERE Prefix
    > LIKE \'',p_number , '\';');
    >
    > PREPARE stmt1 FROM @l_sql;
    > EXECUTE stmt1 ;
    >
    > DEALLOCATE PREPARE stmt1;
    > END;
    > Thank you....
    >
    You can do it through a user variable.
    For example:

    delimiter //

    drop procedure if exists GetPortability //

    CREATE PROCEDURE `GetPortability`(p_table VARCHAR(50))
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
    BEGIN
    declare myvar int;
    SET @l_sql = CONCAT('set @result = (SELECT COUNT(*) FROM ',p_table, ')' );

    PREPARE stmt1 FROM @l_sql;
    EXECUTE stmt1 ; -- here @result gets the value of COUNT(*)

    DEALLOCATE PREPARE stmt1;
    set myvar = @result;
    -- do something with myvar
    END//

    delimiter ;


    An alternative could be:

    SET @l_sql = CONCAT('SELECT @result := COUNT(*) FROM ',p_table );

    But it would also produce a dataset, which may not be what you want.

    ciao
    gmax

    --
    _ _ _ _
    (_|| | |(_|>< The Data Charmer
    _|
    [url]http://datacharmer.org/[/url]
    Giuseppe Maxia Guest

  4. #3

    Default Re: Prepared Statements within stored procedures

    Thank you Giusseppe, it works perfectly ...
    Bye

    martinacevedo@gmail.com Guest

  5. #4

    Default Re: Prepared Statements within stored procedures

    Uh, what happened to the "WHERE Prefix..."?
    Unregistered 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