我有一张桌子books
。
+-------+-----------+------------+
| serial| book_name | book_author|
+-------+-----------+------------+
| 1 | Star Wars | 1 |
| 2 | Java | 2 |
| 3 | Alimals | 3 |
| 4 | Star Wars | 1 |
+-------+-----------+------------+
我想使用存储过程来选择book_name
;
我的存储过程如下所示:
USE books;
DELIMITER //
CREATE PROCEDURE doselect(col VARCHAR(50), tab VARCHAR(50), cond INT(5))
BEGIN
SET @x = NULL;
SET @col = col;
SET @tab = tab;
SET @cond = cond;
SET @x = (SELECT @col FROM @tab WHERE b_id = @cond);
END //
DELIMITER ;
然后我称之为:
CALL doselect('book_name', 'books', 3)
但身份证不起作用。它没有看到变量@tab
。错误是:
表书。@tab不存在。
我还使用了这个 SELECT 条件的变体:
SET @x = (SELECT 'col' FROM 'tab' WHERE b_id = 'cond');
同样的错误,但现在没有@
:
表books.tab不存在。
在这种情况下如何正确传递变量?如何让它看到我的变量?
谢谢你。