1

以前は正常に機能していたこのSQLステートメントのビューを作成したいと思います。しかし、これをビューに作成すると、それを示す"View's SELECT contains a variable or parameter."エラーが表示されます。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

この部分は、SQLステートメントを使用してビューを作成しようとしたときのエラーを示しています。

4

2 に答える 2

1

VIEW■ストアドプロシージャや関数のようにパラメータを持つことはできません。これは以前にSOユーザーによって回答されています:パラメータ付きのビュー

于 2012-09-13T03:08:02.427 に答える
0

ビュー自体のクエリ定義で@AllocationDateや@LocationNameなどの変数を使用することはできません。

代わりにあなたができることは

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

そして、ビューを使用するときの条件を入れます

したがって、SELECTステートメントは次のようになります。

SELECT * FROM `satsschema`.`viewTimeBreak` a 
WHERE 
(a.AllocationDate = @AllocationDate) 
AND (a.LocationName = @LocationName)   
AND (a.Break = 1)
GROUP BY a.EmpName
于 2012-09-13T03:09:04.900 に答える