回答

收藏

在MySQL中:如何将表名作为存储过程和/或函数参数传递?

技术问答 技术问答 45 人阅读 | 0 人回复 | 2023-09-13

例如,这不起作用:
5 `- V7 n: G' L9 }- i# H1 o! DDELIMITER //8 V/ |. _, D0 l- V+ X1 n) h0 v- A
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
4 ]; z. s8 `3 n, W  BEGIN
5 Z" l/ O- B: ?" t; H    SELECT COUNT(*) as ct FROM tbl_name;3 ~3 N" t4 g: a$ P. M
  END //
: u( J! O/ j9 y) TDELIMITER ;
" R: s5 x* A9 s( n' a3 J/ f+ yCALL countRows('my_table_name');# X0 e2 S8 {3 e$ p
产生:0 ^1 d+ @+ \5 ]7 s0 [
ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist
  c4 P9 V$ v8 [3 V但是,这按预期工作:
  N* d. z7 h5 f3 T2 tSELECT COUNT(*) as ct FROM my_table_name;
" T  n* K" t" `- ~在select语句中使用参数作为表名需要什么语法?这有可能吗?7 t. W- f! {6 R$ J- s
               
1 l; }5 i0 y  u# q2 Q解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则