Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将动态参数传递给MySQL视图_Mysql_Sql_Select_View_Mysql Workbench - Fatal编程技术网

如何将动态参数传递给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所需值的结果 代码中应该做哪些更改 提前感

我在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
所需值的结果

代码中应该做哪些更改


提前感谢。

只需创建不带参数的视图(即,仅处理连接):

并在查询时应用动态参数:

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;