Bug #26140 View's SELECT contains a variable or parameter, Error 1351
| Submitted: | 7 Feb 2007 9:12 | Modified: | 7 Feb 2007 10:52 |
|---|---|---|---|
| Reporter: | Hansjörg Schock | Email Updates: | |
| Status: | Not a Bug | Impact on me: | |
| Category: | MySQL Server: Views | Severity: | S3 (Non-critical) |
| Version: | 5.0.27 | OS: | Windows (WIN XP Prof SP2) |
| Assigned to: | CPU Architecture: | Any |
[7 Feb 2007 10:12]
Valeriy Kravchuk
Thank you for a problem report. Sorry, but this is a documented limitation. Read http://dev.mysql.com/doc/refman/5.0/en/create-view.html: "A view definition is subject to the following restrictions: ... - Within a stored routine, the definition cannot refer to routine parameters or local variables."
[7 Feb 2007 10:52]
Hansjörg Schock
What a bummer, what is the reason for that? So you can never use a View with parameters or variables? kind regards Hansjoerg
[8 Feb 2007 11:40]
Valeriy Kravchuk
This is a limitation of current implementation. What is the reason? I don't know (but serious enough for the limitation to be documented explicitely!) I hope you will be able to create views using parameters eventually. Maybe, with prepared statements (http://dev.mysql.com/doc/refman/5.0/en/sqlps.html). CREATE VIEW is not supported with prepared statements yet, in 5.0.x, according to the manual. So, not in 5.0.27.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.039 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: I have tried to create a Stored Procedure which creates a VIEW. The Procedure has the IN parameter "id". This parameter should be used later in: WHERE B.SystemsID = id When I execute the SP, MySQL reports the error: View's SELECT contains a variable or parameter, Error 1351 If I fill in for example: WHERE B.SystemsID = '7' all is OK. How to repeat: CREATE PROCEDURE `test`.`proc_gettabs`(IN id INT) BEGIN CREATE OR REPLACE VIEW viewpc_gettabs AS SELECT A.TabName,A.TabsID,A.TabWidth,C.English FROM tabs A, groups B, text C WHERE B.SystemsID = id AND B.TabsID = A.TabsID AND A.TextID = C.TextID GROUP BY B.TabsJID ; END $$