mysql 有表中使用動態的變數

2021-08-22 14:52:39 字數 1109 閱讀 3511

從語法上來講declare cur cursor for語句必須寫在set @sqlstr前面,這就意味著不能通過先執行一條動態語句根據結果拼湊游標的內容,而且游標在定義的時候也沒有引數的概念,而是將定義的結構完全當作乙個字串直接處理,不會做任何的處理,也就是靜態游標吧。關於dynamic cursor的內容官方有解釋我從5.1找到5.6只有這乙個地方講dynamic cursor而且內容一模一樣。

解決方法:

思路  1、將自己想要傳遞的變數暫時儲存在乙個檢視或則臨時的表中,將變數放入檢視

2、定義游標時直接查詢這個檢視(因為不可以傳遞變數,但是我們可以在檢視中包含變數)

3、呼叫上面兩個儲存過程

實現:

begin  

declare done int default 0;

declare temp_id int;

declare cur cursor for( select id from tree_test_view);

declare continue handler for not found set done = 1;

drop view if exists tree_test_view;

set @sqlstr = "create view tree_test_view as ";

set @sqlstr = concat(@sqlstr , "select id from tree_test where parent_id = 0 limit ", top);

prepare stmt from @sqlstr;

execute stmt;

deallocate prepare stmt;

open cur;

fetch cur into temp_id;

while done <> 1 do

delete from tree_test where id = temp_id or parent_id = temp_id;

fetch cur into temp_id;

end while;

close cur;

end

動態sql中使用臨時表的例項

來自 在動態sql 語句中使用臨時表 不能使用臨時表 變數名 動態sql語句大家都經常會用到,下面就為您介紹乙個動態sql中使用臨時表的例子,供您參考,希望對您學習動態sql語句方面能有所幫助。drop table t 1 declare sqlste varchar 200 create tabl...

mysql 使用變數 MySQL變數的使用

在編寫儲存過程中,有時需要使用變數,儲存資料處理過程中的值 mysql中,變數可以在子程式中,宣告並使用,作用範圍在begin end程式中 在儲存過程中,使用declare語句,定義變數 語法格式 declare var name varname date type default value v...

vue中使用css變數實現動態改變愛心顏色

需要定時更改顯示的樣式的顏色,實現愛心流星雨的顏色實時變化 需要使用到css變數,js的 document.body.style.setproperty函式 需要在data中定義兩個屬性 timer value 0 在生命週期鉤子mounted中進行新增定時器操作 this.timer setint...