日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了在MySQL中存儲過程的OUT參數(shù)中返回結(jié)果集的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我在MySQL中有一個過程,它有兩個IN參數(shù):UserLogin(VARCHAR)和UserPassword(VARCHAR),以及兩個OUT參數(shù):UserID(INT)和UserRights(VARCHAR)。

該過程的工作方式如下:檢查數(shù)據(jù)庫中是否存在具有給定登錄和密碼的用戶,如果是,則返回其ID、用戶權(quán)限和設(shè)置。權(quán)限可以連接到一個字符串中,但我希望避免連接和隨后解析Web設(shè)置,因為數(shù)據(jù)的結(jié)構(gòu)更復(fù)雜。

現(xiàn)在,我的過程僅返回用戶ID和用戶權(quán)限,如果成功,我將運行另一條SELECT語句以獲取設(shè)置。

當(dāng)前程序:

DELIMITER $$
CREATE PROCEDURE `proc_login_user`(IN UserName VARCHAR(45), IN Pwd VARCHAR(250), OUT Uid INT, OUT Rights VARCHAR(100))
BEGIN
    DECLARE Uname VARCHAR(45);
    DECLARE Pass VARCHAR(250);
    DECLARE UserId INT;
    SET @Uname := UserName;
    SET @Pass := Pwd;
    SET @UserId = (SELECT ID FROM `users` WHERE Login = @Uname AND Password = @Pass);    
    SET Uid = @UserId;
    SET Rights = /* some SELECT GROUP_CONCAT statement to create string */
END;

我希望在過程中再添加一個輸出參數(shù):應(yīng)該是結(jié)果集的用戶設(shè)置。

類似以下內(nèi)容:

DELIMITER $$
CREATE PROCEDURE `proc_login_user`(IN UserName VARCHAR(45), IN Pwd VARCHAR(250), OUT Uid INT, OUT Rights VARCHAR(100), OUT Settings)
BEGIN
    DECLARE Uname VARCHAR(45);
    DECLARE Pass VARCHAR(250);
    DECLARE UserId INT;
    SET @Uname := UserName;
    SET @Pass := Pwd;
    SET @UserId = (SELECT ID FROM `users` WHERE Login = @Uname AND Password = @Pass);    
    SET Uid = @UserId;
    SET Rights = /* some SELECT GROUP_CONCAT statement to create string */
    SET Settings = SELECT * FROM `settings` WHERE UserID = @UserId;
END;

如有任何幫助,我們將不勝感激。

謝謝,
茲比內(nèi)克

推薦答案

mySQL不允許變量包含結(jié)果集或表;它們只是單個標(biāo)量值。

在存儲過程中,您只需運行一個SELECT,結(jié)果集將返回給客戶端。您不能在MySQL內(nèi)的其他存儲例程中使用該結(jié)果集,但調(diào)用該過程的應(yīng)用程序可以像使用任何其他查詢結(jié)果一樣使用該結(jié)果集。

作為備注:

DECLARE Uname VARCHAR(45);
SET @Uname := UserName;

這兩行彼此無關(guān)。局部變量‘Uname’和用戶變量‘@Uname’是完全不同的兩件事。在本例中,您不需要其中任何一個。您可以在查詢中直接引用IN/OUT變量(只需確保這些變量與表中某列的名稱不同,否則可能會得到意外的結(jié)果。)

DELIMITER $$
CREATE PROCEDURE `proc_login_user`(IN UserName VARCHAR(45), IN Pwd VARCHAR(250), OUT Uid INT, OUT Rights VARCHAR(100))
BEGIN
    SELECT ID INTO Uid FROM `users` WHERE Login = UserName AND Password = Pwd;    
    /* some SELECT GROUP_CONCAT INTO Rights statement to create string */
    SELECT * FROM `settings` WHERE UserID = Uid;
END;

這篇關(guān)于在MySQL中存儲過程的OUT參數(shù)中返回結(jié)果集的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:errorReturnresultsetinOUTparameterofStoredProcedureinMySQL exception 
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定