问题
I have created this in mysql
CREATE VIEW MYVIEW AS (
SELECT A.FNAME
, A.LNAME
, B.EMAIL
FROM EMPLOYEE A, EMPEMAIL B
WHERE A.EID = :empId
AND A.EID = B.EID
AND B.EMAILTYP = :emailType)
now i want make " empId " and " emailType " dynamic.I mean pass the value at select time. what need to change in code?? thanx in advance
回答1:
Just create the view without the parameters (i.e., to take care of the join only):
CREATE VIEW MYVIEW AS (
SELECT A.FNAME
, A.LNAME
, B.EMAIL
, A.EID AS EID -- added to be used in the WHERE
, B.EMAILTYP AS EMAILTYP -- added to be used in the WHERE
FROM EMPLOYEE A, EMPEMAIL B
WHERE A.EID = B.EID)
And apply the dynamic parameters when you query:
SELECT FNAME, LNAME, EMAIL
FROM my_view
WHERE eid = 'your_empId' AND emailtyp = 'your_emailType'
Note the WHERE
shown above, it uses the two extra fields declared in the VIEW
回答2:
You can use this solution with a function -
CREATE FUNCTION func() RETURNS int(11)
RETURN @var;
CREATE VIEW view1 AS
SELECT * FROM table1 WHERE id = func();
Using example:
SET @var = 1;
SELECT * FROM view1;
来源:https://stackoverflow.com/questions/19946526/how-pass-dynamic-parameter-in-mysql-view