在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
解决方案: |
|
|
|
|
|