如何将动态参数传递给MySQL视图
我在MySQL中创建了以下视图:如何将动态参数传递给MySQL视图,mysql,sql,select,view,mysql-workbench,Mysql,Sql,Select,View,Mysql Workbench,我在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) 我必须使empId和emailType动态,即在运行时获得empId和emailType所需值的结果 代码中应该做哪些更改 提前感
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)
我必须使empId
和emailType
动态,即在运行时获得empId
和emailType
所需值的结果
代码中应该做哪些更改
提前感谢。只需创建不带参数的视图(即,仅处理连接): 并在查询时应用动态参数:
SELECT FNAME, LNAME, EMAIL
FROM my_view
WHERE eid = 'your_empId' AND emailtyp = 'your_emailType'
注意上面显示的
中,它使用了视图中声明的两个额外字段-
CREATE FUNCTION func() RETURNS int(11)
RETURN @var;
CREATE VIEW view1 AS
SELECT * FROM table1 WHERE id = func();
使用示例:
SET @var = 1;
SELECT * FROM view1;
Thanx用于回复,但我不想在结果列中显示A.EID B.EMAILTYP的值。我应该做什么更改???只需查询您想要的字段-我修改了我的答案以显示这一点。我只想选择三列-->A.FNAME、A.LNAME、B.Email当我们需要执行参数化WHERE子句时,我们需要跳过一些记录,在您的实现中,除非有人认为可以获取所有记录,然后在大型数据集上手动执行,否则这是可以的。参数化视图的问题仍然没有解决。这里的问题是,该视图将获取比您可能需要的大得多的数据集。这是我当前的问题,我需要在我的视图或性能库中使用动态where
。
SET @var = 1;
SELECT * FROM view1;