當前位置:首頁 » 存儲配置 » mysql存儲過程select變數

mysql存儲過程select變數

發布時間: 2024-06-14 17:32:29

1. mysql 存儲過程怎麼賦值

DELIMITER$$
USE`test`$$
DROPPROCEDUREIFEXISTS`p_getAllTablesCount`$$
CREATEDEFINER=`root`@`localhost`PROCEDURE`p_getAllTablesCount`()
BEGIN
DECLAREtableNameVARCHAR(100);
DECLAREtablesnVARCHAR(100);
DECLAREtableCountINT;
DECLAREstopFlagINT;
DECLAREsqlStrVARCHAR(1000);
--注意:請修改資料庫名稱
DECLAREcursor_nameCURSORFORSELECTTABLE_NAMEFROMinformation_schema.tablesWHEREtable_schema='test';
'02000'SETstopFlag=1;
CREATETABLEIFNOTEXISTStemp_table(table_nameVARCHAR(100),table_countVARCHAR(100));
OPENcursor_name;
REPEAT
FETCHcursor_nameINTOtableName;
SETsqlStr=CONCAT('SELECTCOUNT(1)into@tableCountFROM',tableName);
SELECTsqlStrINTO@sqlStr;
--select@sqlStr;
SELECT@tableCountINTOtableCount;
BEGIN
@sqlStr;
EXECUTEstepInsertIntoTable;
END;
SETsqlStr=CONCAT('insertintotemp_tablevalues(''',CONCAT(tableName),''',''',CONCAT(tableCount),''');');
SELECTsqlStrINTO@sqlStr;
BEGIN
@sqlStr;
EXECUTEstepInsertIntoTable;
END;
UNTILstopFlagENDREPEAT;
CLOSEcursor_name;
SELECTtable_name,table_countFROMtemp_tableORDERBYtable_countDESC;
--PREPAREstepFROM@sql1;
--EXECUTEstep;
DROPTABLEtemp_table;
END$$
DELIMITER;

2. MySQL存儲過程里怎麼定義一個參數類型和表的變數類型一樣

MySQL存儲過程中,定義變數有兩種方式:
  1、使用set或select直接賦值,變數名以@開頭,可以在一個會話(即連接)的任何地方聲明,作用域是整個會話,稱為用戶變數。例如:set @var=1;
  2、 以declare關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,主要用在存儲過程中,或者是給存儲傳參數中。例如: declare var1 int default 0;

兩者的區別是:
    在調用存儲過程時,以declare聲明的變數都會被初始化為null。而會話變數(即@開頭的變數)則不會被再初始化,在一個會話(連接)內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全局變數。

3. mysql存儲過程 把SQL語句返回結果賦給一個變數,該SQL語句返回的結果不止一條,該怎麼寫,新手,求指教!

在機器上裝好sqlserver2005和mysql的驅動,sqlserver2005中在要導出的資料庫上點右鍵,有個導出數據,跟著步驟往下走就行了,期間很可能遇到數據類型轉換的問題,快到最後一步時把包保存下來,報錯的話,可以把包打開編輯一下。
如果數據量小的話,導入excel里再導到mysql也好

4. MySQL存儲過程中能不能用IF exists(SELECT * from form__rmms_pofm_fundsmanage) THEN ...END

你這個if是要判斷uisp_lw_100000表空間里是不是存在表form__rmms_pofm_fundsmanage。
你這樣判斷如果是不存在就直接報錯了。所以就不能運行通過。
你在上邊再聲明一個變數tb_name用來存放你要找的這個表名。
select table_name into tb_name from information_schema.tables where table_schema='uisp_lw_100000' AND TABLE_NAME='form__rmms_pofm_fundsmanage';
這樣你判斷tb_name是不是空就行了。判斷跟你的while跳出的判斷一樣。

5. mysql 怎麼定義變數

下面是一個簡單的 存儲過程的例子.

DECLARE v_index INT;
定義一個 名稱為 v_index 的變數, 類型為 INT

MYSQL 變數定義應該只能在 存儲過程, 函數裡面定義.
不像 Oracle / SQL Server , 一個 BEGIN / END 裡面就可以定義/執行了。

mysql> DELIMITER //
mysql> CREATE PROCEDURE TestWhile()
-> BEGIN
-> DECLARE v_index INT;
->
-> SET v_index = 0;
->
-> WHILE v_index < 5 DO
-> SET v_index = v_index + 1;
-> SELECT v_index;
-> END WHILE;
->
-> END//
Query OK, 0 rows affected (0.00 sec)

6. mysql 進:在存儲過程中用select 如何給變數賦值

用select...into語句

下面是mysql 5.0的幫助文檔的:
這個SELECT語法把選定的列直接存儲到變數。因此,只有單一的行可以被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用戶變數名在MySQL 5.1中是對大小寫不敏感的。請參閱9.3節,「用戶變數」。

重要: SQL變數名不能和列名一樣。如果SELECT ... INTO這樣的SQL語句包含一個對列的參考,並包含一個與列相同名字的局部變數,MySQL當前把參考解釋為一個變數的名字。例如,在下面的語句中,xname 被解釋為到xname variable 的參考而不是到xname column的:

CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;

SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
當這個程序被調用的時候,無論table.xname列的值是什麼,變數newname將返回值『bob』。

熱點內容
二維otsu演算法 發布:2024-10-22 21:06:23 瀏覽:634
福祿壽源碼 發布:2024-10-22 21:06:13 瀏覽:434
pythongoagent 發布:2024-10-22 20:42:05 瀏覽:78
matlabpid演算法 發布:2024-10-22 20:37:51 瀏覽:332
文件遍歷編程 發布:2024-10-22 20:37:47 瀏覽:622
nip伺服器地址在哪 發布:2024-10-22 20:17:48 瀏覽:621
戶戶通衛星鍋出廠設置密碼是什麼 發布:2024-10-22 20:11:32 瀏覽:759
怎麼將伺服器的文件導出來 發布:2024-10-22 20:09:13 瀏覽:556
直播秀場源碼 發布:2024-10-22 20:08:22 瀏覽:751
php遠程資料庫 發布:2024-10-22 20:03:05 瀏覽:730