當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程語言 » mysqlin動態sql

mysqlin動態sql-九游会j9娱乐平台

發布時間: 2024-11-12 23:42:57

⑴ mysql中能執行動態sql嗎

可以的。

set v_sql= '動態sql';

set @v_sql=v_sql; --將動態sql字元串賦值給一個變數(可以之前沒有定義,但要以@開頭)
prepare stmt from @v_sql; --預處理需要執行的動態sql,其中stmt是一個變數
execute stmt; --執行sql語句
deallocate prepare stmt; --釋放掉預處理段

⑵ 請問mysql存儲過程中多個動態sql語句該怎麼寫,第二個動態語句要用第一個動態語句的值 該怎麼調用

同樣的方法 排列下來,主要是前面的動態語句你最好把執行結果放入到一個表裡面 類似insert select的方法 然後把set a:=select s from xx; 這樣 你就可以取到上個值啦 然後你再去用就沒有問題啦 一步一調試 方便容易找到錯誤的點

⑶ mysql資料庫中字元串拼接問題

mysql不能直接運行動態sql語句的,但是可以寫在存儲過程中,然後調用過程執行,具體如下:

(1)定義存儲過程,示例:

createdefiner=`root`@`localhost`procedure`query_extra_table`(table_indexvarchar(255))
begin
set@sql=concat("select*fromtbl_order_",table_index);
preparestmtfrom@sql;
executestmt;
end

(2)調用存儲過程:

callquery_extra_table('483')

⑷ 動態sql是什麼什麼是靜態sql,動態sql的動態體現在哪裡

首先,所謂sql的動態和靜態,是指sql語句在何時被編譯和執行,二者都是用在sql嵌入式編程中的,這里所說的嵌入式是指將sql語句嵌入在高級語言中,而不是針對於單片機的那種嵌入式編程。
在某種高級語言中,如果嵌入了sql語句,而這個sql語句的主體結構已經明確,例如在java的一段代碼中有一個待執行的sql「select * from t1 where c1>5」,在java編譯階段,就可以將這段sql交給資料庫管理系統去分析,資料庫軟體可以對這段sql進行語法解析,生成資料庫方面的可執行代碼,這樣的sql稱為靜態sql,即在編譯階段就可以確定資料庫要做什麼事情。
而如果嵌入的sql沒有明確給出,如在java中定義了一個字元串類型的變數sql:string sql;,然後採用preparedstatement對象的execute方法去執行這個sql,該sql的值可能等於從文本框中讀取的一個sql或者從鍵盤輸入的sql,但具體是什麼,在編譯時無法確定,只有等到程序運行起來,在執行的過程中才能確定,這種sql叫做動態sql。例如每一種資料庫軟體都有能夠執行sql語句的界面,那個界面接收的sql就是動態sql,因為資料庫廠商在做這個界面時,並不知道用戶會輸入哪些sql,只有在該界面執行後,接收了用戶的實際輸入,才知道sql是什麼。
另外還要注意一點,在sql中如果某些參數沒有確定,如"select * from t1 where c1>? and c2

⑸ mysql存儲過程能不能直接執行拼接的sql語句

當然可以,就是在mysql存儲過程中使用動態sql,就可以拼接sql,然後執行了。


給你復制一段,如果不滿意,自己搜索 mysql存儲過程動態sql就可以了


;
createproceduresearchbydoctor(
indoctoridvarchar(50),
indeptidvarchar(50),
inbegindatevarchar(20),
inenddatevarchar(20),
instanddeptidvarchar(50),
inoperationflagvarchar(50),
inssczflidvarchar(50),
outopernumint,
outavgdangerindexdouble,
outopergrcaseint
)
begin
declarecal1varchar(800);
declarecal2varchar(800);

setcal1="selectcount(1),avg(danger_index)into@para1,@para2fromyw_ssxxbwhere1=1";
setcal2="selectcount(1)into@para3fromgr_grbwwhereope_relidin(selectrelidfromyw_ssxxbwhere1=1";
#拼接醫生id
setcal1=concat(cal1,"","andopedoc_id=","'",doctorid,"'");
setcal2=concat(cal2,"","andopedoc_id=","'",doctorid,"'");

#拼接科室id
ifdeptid<>''then
setcal1=concat(cal1,"anddept_id=","'",deptid,"'");
endif;
#拼接開始結束日期
ifbegindate<>''andenddate<>''then
setcal1=concat(cal1,"","andoper_atbetween","'",begindate,"'","and","'",enddate,"'");
endif;

#拼接標准科室
ifstanddeptid<>''then
setcal1=concat(cal1,"","anddept_idin(_dept_id=","'",standdeptid,"'",")");
endif;
#拼接數據來源
ifoperationflag<>''then
setcal1=concat(cal1,"","andopepartkindidin(selectidfromzh_ssczflwhereflag=","'",operationflag,"'",")");
endif;
#拼接手術操作類別
ifssczflid<>''then
setcal1=concat(cal1,"","andopepartkindid=","'",ssczflid,"'");
endif;
setcal2=concat(cal2,")");
set@sql1=cal1;
set@sql2=cal2;
preparestmt1from@sql1;
executestmt1;
deallocatepreparestmt1;
preparestmt2from@sql2;
executestmt2;
deallocatepreparestmt2;
setopernum=@para1;
setavgdangerindex=@para2;
setopergrcase=@para3;
end;
熱點內容
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:97
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:193
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
网站地图