2017-02-02 1 views
-1

Je le tableau suivant dans ma base de donnéesrécupérer les données de la table

CREATE TABLE `sms_pool` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `ag_id` VARCHAR(20) NOT NULL, 
    `sms_to` VARCHAR(15) NOT NULL, 
    `template_name` VARCHAR(100) NOT NULL, 
    `contents` VARCHAR(500) NOT NULL, 
    `bulk_flag` VARCHAR(1) NOT NULL, 
    `file_name` VARCHAR(100) NULL DEFAULT NULL, 
    `send_flag` VARCHAR(1) NOT NULL, 
    `creation_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `created_by` VARCHAR(20) NOT NULL, 
    `modification_date` DATETIME NULL DEFAULT NULL, 
    `modified_by` VARCHAR(20) NULL DEFAULT NULL, 
    `processing_msg` VARCHAR(2000) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`), 

); 

Je souhaite écrire une procédure/fonction qui prend « id » en entrée.

Si « id » est présent dans la table, alors il doit retourner la ligne correspondante,

si « id » = NULL alors il doit retourner toutes les lignes de la base de données.

NOTE: si 'id' n'est pas présent dans le tableau, il doit renvoyer toutes les lignes.

Comment est-ce que je devrais faire ceci? Toute aide est appréciée. Merci d'avance. : D

+2

Deuxième situation ne peut tout simplement pas se produire parce que vous avez déclaré id comme non nul. – e4c5

+0

'select * from any_table où id =: id ou (: id est nul)'? La procédure/fonction peut simplement ouvrir ce curseur et renvoyer ref. –

+0

Oracle ou Mysql? – Aleksej

Répondre

1

Vous voulez dire probablement

select * from sms_pool 
where :id = id OR :id is null; 
+1

Cela ne retourne pas toutes les lignes lorsque: id n'est pas null mais: id n'est pas dans sms_pool. Vous aurez besoin de 'OR: id n'est pas dedans (sélectionnez l'ID de sms_pool)' ou similaire pour y parvenir. –