2012-09-13 3 views
1

Je souhaite créer une vue pour cette instruction sql qui fonctionnait auparavant correctement. Mais quand je crée ceci dans une vue, une erreur m'indiquant montrant cela, "View's SELECT contains a variable or parameter." Quelqu'un peut-il me dire où l'erreur tombe puisque je suis tout nouveau aux vues dans MySQL. Merci!Erreur lors de la création de la vue dans MySQL

CREATE VIEW `satsschema`.`viewTimeBreak` AS 
SELECT a.EmpName, CONCAT(b.StartTime, '-', b.EndTime) AS ShiftTime, CONCAT(a.EmpTime,  '-', ADDTIME(a.EmpTime, '0 1:0:0.000000')) AS BreakTime, a.Break, 
        a.EmployeeOnBreak, '' AS SignIn, '' AS SignOut 
FROM   satsschema.employeeslot a INNER JOIN 
        satsschema.ufis b ON b.UFISID = a.UFISEmpGroup 
WHERE  (a.AllocationDate = @AllocationDate) AND (a.LocationName = @LocationName) AND (a.Break = 1) 
GROUP BY a.EmpName 

Cette partie montre l'erreur lorsque j'ai essayé de créer une vue en utilisant l'instruction SQL.

+0

double possible de [Can Je crée la vue avec le paramètre dans MySQL?] (Http://stackoverflow.com/questions/2281890/can-i-create-view-with-parameter-in-mysql) – zerkms

Répondre

0

Vous ne pouvez pas utiliser de variables telles que @AllocationDate et @LocationName dans la définition de requête d'une vue elle-même.

Au lieu de cela ce que vous pouvez faire est

CREATE VIEW `satsschema`.`viewTimeBreak` AS 
SELECT 
    a.EmpName, 
    CONCAT(b.StartTime, '-', b.EndTime) AS ShiftTime, CONCAT(a.EmpTime,  '-', ADDTIME(a.EmpTime, '0 1:0:0.000000')) AS BreakTime, 
    a.Break, 
    a.EmployeeOnBreak, '' AS SignIn, 
    '' AS SignOut, 
    a.AllocationDate, 
    a.LocationName 
FROM    
    satsschema.employeeslot a 
    INNER JOIN satsschema.ufis b 
      ON b.UFISID = a.UFISEmpGroup 

Et puis mettre les conditions au moment de l'utilisation de la vue

afin que votre instruction SELECT serait

SELECT * FROM `satsschema`.`viewTimeBreak` a 
WHERE 
(a.AllocationDate = @AllocationDate) 
AND (a.LocationName = @LocationName) 
AND (a.Break = 1) 
GROUP BY a.EmpName 
+0

L'instruction select demande une erreur indiquant que "La colonne Unknown a.AllocationDate dans la clause where" Vous avez une idée à ce sujet? – Philemon

+0

Avez-vous utilisé ma requête pour la vue? Vous remarquerez que j'ai ajouté 2 colonnes dans la requête de définition de vue pour a.AllocationDate et a.LocationName comme vous en aviez besoin dans la clause where – InSane

+0

oh okay remarqué. Merci – Philemon

1

VIEW s ne peut pas avoir les paramètres comme la procédure stockée et les fonctions. Cela a déjà été répondu par l'utilisateur SO: view with parameter.

+0

Curieux pourquoi n'avez-vous pas clôturer voter avec d lien en double. – zerkms

Questions connexes