2013-04-09 13 views
5

seguito è il mio codice:Come scrivere mysql stored procedure utilizzando come operatore

 DELIMITER $$ 

    CREATE DEFINER=`root`@`localhost` PROCEDURE `employee_with_asset`(IN name  VARCHAR(250)) 
    BEGIN 
    SELECT a.Asset_code,a.name as name1,a.type,a.description,`purchase date`, 
    `amc availability`,`amc renewal`,`employee Id`,b.Name FROM `asset_details` a, 
    employee b WHERE b.Name LIKE '%' + @name + '%' and a.`assigned to`=b.`employee Id`; 
    END 

E sta mostrando errore nei pressi LIKE. Come risolverlo

+0

si deve usare 'CONCAT()' al posto di "+" – JoDev

risposta

14

la concatenazione in MySQL viene fatto usando CONCAT()

LIKE CONCAT('%', @name , '%') 

INDICAZIONE COMPLETA

DELIMITER $$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `employee_with_asset` 
(
    IN _name  VARCHAR(250) 
) 
BEGIN 
    SELECT a.Asset_code, 
      a.name as name1, 
      a.type, 
      a.description, 
      `purchase date`, 
      `amc availability`, 
      `amc renewal`, 
      `employee Id`, 
      b.Name 
    FROM `asset_details` a 
      INNER JOIN employee b 
       ON a.`assigned to` = b.`employee Id` 
    WHERE b.Name LIKE CONCAT('%', _name , '%'); 
END $$ 
DELIMITER ; 
+0

+1 E 'come la risposta che ho scritto (e cancellare per non duplicare). Quindi penso che farà il trucco. Sei veloce ... – JoDev

+0

@ J W: Non funziona. –

+0

quali errori ottieni? non funziona può avere più significato –

0

La risposta di John Woo è giusto, ma se non si utilizza utf8_general_ci raccolta, si deve lanciare collezione dopo Clausola WHERE (dopo ogni condizione se si hanno più condizioni) uguale alla raccolta della colonna che si confronta con questo

... WHERE name LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci 

o più condizioni

... WHERE name LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci 
OR job LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci ... 
Problemi correlati