回答

收藏

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

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

例如,这不起作用:
) G& ^7 ]- M. u) [6 d$ vDELIMITER //
/ z( `& k, t  L+ U" gCREATE PROCEDURE countRows(tbl_name VARCHAR(40))
0 C( O% ], T. ?% E0 x! c2 X  BEGIN
' w/ \2 ~% H( Q" V* X* q% y3 e    SELECT COUNT(*) as ct FROM tbl_name;2 ]2 S4 g+ {5 ]" k  Q% }
  END //5 A0 L: x; `: H# M
DELIMITER ;* m5 F  n7 y; b. Z
CALL countRows('my_table_name');4 L* Q1 \2 @. I* x. W$ S
产生:5 N# i7 K* \8 D; [! D
ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist
$ a  ^# Z6 t& k+ I- [但是,这按预期工作:0 M+ y5 Y9 |8 X' `" t# g# Y  V
SELECT COUNT(*) as ct FROM my_table_name;9 k3 [8 ?% p. ^1 X# I' D" _( K3 ^
在select语句中使用参数作为表名需要什么语法?这有可能吗?4 H  d7 L- {0 U2 t% y3 C1 G
                - G! b, W5 f0 d; i6 t! I
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则