国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
mysql存儲過程執(zhí)行動態(tài)sql的問題
            我現(xiàn)在想通過mysql的存儲過程執(zhí)行動態(tài)SQL,傳遞一個表名查詢,根據(jù)表名查詢表中的第一個列。

根據(jù)第一列獲取其列中的最大值,下面是我寫的存儲過程。但始終獲取不到最大值的結(jié)果,請幫忙看一下 是什么原因?


DELIMITER $$
CREATE PROCEDURE genBillsNoProc(IN tableName VARCHAR(30),OUT data_t VARCHAR(100))
BEGIN
DECLARE sql_1 VARCHAR(1000);
DECLARE sql_2 VARCHAR(1000);
SET sql_1  =  CONCAT("SELECT COLUMN_NAME into @colName FROM information_schema.COLUMNS WHERE table_name='",tableName,"' limit 0,1");
SET sql_2  =  CONCAT("SELECT MAX(?) FROM ",tableName);


SET @frist_sql=sql_1;
PREPARE stmt FROM @frist_sql;
EXECUTE stmt;

SET data_t := @colName;
SET @second_sql=sql_2;
PREPARE stmt1 FROM @second_sql;
EXECUTE stmt1 USING @colName;
SELECT sql_2 ;
END$$

##執(zhí)行存儲過程
CALL genBillsNoProc('t_common_system',@data_t);

運行存儲過程返回結(jié)果就是一個列名:
col_xxx

問題補充:呵呵,問題解決了

正確的SQL:

DELIMITER $$
CREATE PROCEDURE genBillsNoProc(IN tableName VARCHAR(30),OUT data_t VARCHAR(100))
BEGIN
DECLARE sql_1 VARCHAR(1000);
DECLARE sql_2 VARCHAR(1000);

SET sql_1  =  CONCAT("SELECT COLUMN_NAME into @colName FROM information_schema.COLUMNS WHERE table_name='",tableName,"' limit 0,1");
#執(zhí)行sql_1SQL語句;
SET @frist_sql=sql_1;
PREPARE stmt FROM @frist_sql;
EXECUTE stmt;

SET sql_2 = CONCAT("select max(",@colName,") into @sql_result from ",tableName);
#執(zhí)行sql_2SQL語句;
SET @second_sql=sql_2;
PREPARE stmt1 FROM @second_sql;
EXECUTE stmt1;

#設(shè)置返回結(jié)果;
SET data_t := @sql_result;
END$$

##執(zhí)行存儲過程
CALL genBillsNoProc('t_common_system',@data_t);
SELECT @data_t;           
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Mysql存儲過程(三)
Mysql分頁查詢通用存儲過程
存儲過程--創(chuàng)建視圖, 游標(biāo)的用法,sql 中 not in(...)查詢條件的用法
zabbix分區(qū)表計劃
實例解析MySQL中的存儲過程及存儲過程的調(diào)用方法
mysql 分頁存儲過程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服