3 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超8個贊
實際上,如果您創(chuàng)建func:
create function p1() returns INTEGER DETERMINISTIC NO SQL return @p1;
并查看:
create view h_parm as
select * from sw_hardware_big where unit_id = p1() ;
然后,您可以使用參數(shù)調(diào)用視圖:
select s.* from (select @p1:=12 p) parm , h_parm s;
希望對您有所幫助。

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊
CREATE VIEW MyView AS
SELECT Column, Value FROM Table;
SELECT Column FROM MyView WHERE Value = 1;
是MySQL中的正確解決方案,其他一些SQL則使您可以更精確地定義視圖。
注意:除非View非常復(fù)雜,否則MySQL將對其進(jìn)行優(yōu)化。

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊
之前,我想出了一種不同的解決方法,該方法不使用存儲過程,而是使用參數(shù)表和一些connection_id()魔術(shù)。
編輯(從評論中復(fù)制)
創(chuàng)建一個包含稱為列的表connection_id(將其設(shè)為bigint)。在該表中放置用于視圖參數(shù)的列。將主鍵放在上connection_id。替換到參數(shù)表中,并用于CONNECTION_ID()填充connection_id值。在視圖中,使用交叉連接到參數(shù)表并放置WHERE param_table.connection_id = CONNECTION_ID()。這將與參數(shù)表中只有一行的交叉連接,這就是您想要的。然后,您可以使用where子句中的其他列,例如where orders.order_id = param_table.order_id。
添加回答
舉報