Check input parameter : Parameters « Procedure Function « SQL / MySQL

Home
SQL / MySQL
1.Aggregate Functions
2.Backup Load
3.Command MySQL
4.Cursor
5.Data Type
6.Database
7.Date Time
8.Engine
9.Event
10.Flow Control
11.FullText Search
12.Function
13.Geometric
14.I18N
15.Insert Delete Update
16.Join
17.Key
18.Math
19.Procedure Function
20.Regular Expression
21.Select Clause
22.String
23.Table Index
24.Transaction
25.Trigger
26.User Permission
27.View
28.Where Clause
29.XML
SQL / MySQL » Procedure Function » Parameters 
Check input parameter
    
mysql>
mysql>
mysql> CREATE TABLE Employee(
    ->     id            int,
    ->     first_name    VARCHAR(15),
    ->     last_name     VARCHAR(15),
    ->     start_date    DATE,
    ->     end_date      DATE,
    ->     salary        FLOAT(8,2),
    ->     city          VARCHAR(10),
    ->     description   VARCHAR(15)
    -> );
Query OK, rows affected (0.02 sec)

mysql>
mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->              values (1,'Jason',    'Martin',  '19960725',  '20060725', 1234.56'Toronto',  'Programmer');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(2,'Alison',   'Mathews',  '19760321', '19860221', 6661.78'Vancouver','Tester');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(3,'James',    'Smith',    '19781212', '19900315', 6544.78'Vancouver','Tester');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(4,'Celia',    'Rice',     '19821024', '19990421', 2344.78'Vancouver','Manager');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(5,'Robert',   'Black',    '19840115', '19980808', 2334.78'Vancouver','Tester');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(6,'Linda',    'Green',    '19870730', '19960104', 4322.78,'New York',  'Tester');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(7,'David',    'Larry',    '19901231', '19980212', 7897.78,'New York',  'Manager');
Query OK, row affected (0.00 sec)

mysql>
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)
    ->               values(8,'James',    'Cat',     '19960917',  '20020415', 1232.78,'Vancouver', 'Tester');
Query OK, row affected (0.00 sec)

mysql>
mysql> select from Employee;
+------+------------+-----------+------------+------------+---------+-----------+-------------+
| id   | first_name | last_name | start_date | end_date   | salary  | city      | description |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
|    | Jason      | Martin    | 1996-07-25 2006-07-25 1234.56 | Toronto   | Programmer  |
|    | Alison     | Mathews   | 1976-03-21 1986-02-21 6661.78 | Vancouver | Tester      |
|    | James      | Smith     | 1978-12-12 1990-03-15 6544.78 | Vancouver | Tester      |
|    | Celia      | Rice      | 1982-10-24 1999-04-21 2344.78 | Vancouver | Manager     |
|    | Robert     | Black     | 1984-01-15 1998-08-08 2334.78 | Vancouver | Tester      |
|    | Linda      | Green     | 1987-07-30 1996-01-04 4322.78 | New York  | Tester      |
|    | David      | Larry     | 1990-12-31 1998-02-12 7897.78 | New York  | Manager     |
|    | James      | Cat       | 1996-09-17 2002-04-15 1232.78 | Vancouver | Tester      |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
rows in set (0.02 sec)

mysql>
mysql>
mysql>
mysql> delimiter $$
mysql>
mysql> CREATE PROCEDURE sp_customer_search_dyn
    ->     (in_Description VARCHAR(30),
    ->      in_contact_surname VARCHAR(30),
    ->      in_contact_firstname VARCHAR(30),
    ->      in_city VARCHAR(10))
    ->
    -> BEGIN
    ->   DECLARE l_where_clause VARCHAR(1000DEFAULT 'WHERE';
    ->
    ->   IF in_Description IS NOT NULL THEN
    ->       SET l_where_clause=CONCAT(l_where_clause,
    ->          ' description="',in_Description,'"');
    ->   END IF;
    ->   select l_where_clause;
    ->   IF in_contact_surname IS NOT NULL THEN
    ->      IF l_where_clause<>'WHERE' THEN
    ->         SET l_where_clause=CONCAT(l_where_clause,' AND ');
    ->      END IF;
    ->      SET l_where_clause=CONCAT(l_where_clause,
    ->          ' last_name="',in_contact_surname,'"');
    ->   END IF;
    ->   select l_where_clause;
    ->
    ->   IF in_contact_firstname IS NOT NULL THEN
    ->      IF l_where_clause<>'WHERE' THEN
    ->         SET l_where_clause=CONCAT(l_where_clause,' AND ');
    ->      END IF;
    ->      SET l_where_clause=CONCAT(l_where_clause,
    ->          ' first_name="',in_contact_firstname,'"');
    ->   END IF;
    ->   select l_where_clause;
    ->
    ->   IF in_city IS NOT NULL THEN
    ->      IF l_where_clause<>'WHERE' THEN
    ->         SET l_where_clause=CONCAT(l_where_clause,' AND ');
    ->      END IF;
    ->      SET l_where_clause=CONCAT(l_where_clause,
    ->          ' city="',in_city,'"');
    ->   END IF;
    ->   select l_where_clause;
    ->
    ->   SET @sql=CONCAT('SELECT * FROM employee ', l_where_clause);
    ->
    ->   select @sql;
    ->
    ->   PREPARE s1 FROM @sql;
    ->   EXECUTE s1;
    ->   DEALLOCATE PREPARE s1;
    ->
    -> END$$
Query OK, rows affected (0.00 sec)

mysql>
mysql> delimiter ;
mysql> call sp_customer_search_dyn('Tester','Martin','Jason','Toronto');
+----------------------------+
| l_where_clause             |
+----------------------------+
WHERE description="Tester" |
+----------------------------+
row in set (0.02 sec)

+----------------------------------------------------+
| l_where_clause                                     |
+----------------------------------------------------+
WHERE description="Tester" AND  last_name="Martin" |
+----------------------------------------------------+
row in set (0.02 sec)

+----------------------------------------------------------------------------+
| l_where_clause                                                             |
+----------------------------------------------------------------------------+
WHERE description="Tester" AND  last_name="Martin" AND  first_name="Jason" |
+----------------------------------------------------------------------------+
row in set (0.02 sec)

+------------------------------------------------------------------------------------------------+
| l_where_clause                                                                                 |
+------------------------------------------------------------------------------------------------+
WHERE description="Tester" AND  last_name="Martin" AND  first_name="Jason" AND  city="Toronto" |
+------------------------------------------------------------------------------------------------+
row in set (0.24 sec)

+-----------------------------------------------------------------------------------------------------------------------+
| @sql                                                                                                                  |
+-----------------------------------------------------------------------------------------------------------------------+
SELECT FROM employee WHERE description="Tester" AND  last_name="Martin" AND  first_name="Jason" AND  city="Toronto" |
+-----------------------------------------------------------------------------------------------------------------------+
row in set (0.24 sec)

Empty set (0.24 sec)

Query OK, rows affected (0.24 sec)

mysql>
mysql> drop procedure sp_customer_search_dyn;
Query OK, rows affected (0.00 sec)

mysql>
mysql>
mysql>
mysql>
mysql>
mysql> drop table Employee;
Query OK, rows affected (0.00 sec)

          
    
    
  
Related examples in the same category
1.DateTime parameter
2.Verify the input parameter
3.Declare and use the OUT parameter
4.Save status to an OUT parameter
5.Pass status code and message out of a procedure
6.Using OUT parameter to return the status code and message from a procedure
7.Pass variable to a procedure as the OUT parameter
8.Out parameter
9.Three inout parameters
10.Syntax for Function Parameters
11.Create a procedure with out parameter
12.Syntax for Parameters of Procedures
13.Four out parameters
14.Assign value to an out parameter
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.