2013-06-26 26 views
0

如何在where子句中調用MySQL過程?我們怎樣才能在where子句中調用存儲過程?

在該示例中demo是表名get_name()是一個函數,而1是一個參數(id)。

select * from demo where name = (select name from call get_name(1)) 
+0

get_name返回什麼?它不應該只是'select * from demo where name = get_name(1)' – GolezTrol

回答

2

您應該使用函數而不是過程。過程返回(一個或多個)結果集(表),而函數返回單個值。

在使用where子句中的函數之前,如果它們包含數據庫中的select子句,可能會導致查詢優化器無法優化查詢路徑,從而導致序列化查詢和較差的性能。如果數據量很小,或者您可能遇到可能的性能問題,這可以起作用。

相關問題