當前位置:首頁 » 編程語言 » sql執行變數

sql執行變數

發布時間: 2022-07-29 19:56:14

A. sql 執行變數語句

可以啊 ,動態sql語句,如:
declare @sql varchar(2000),@id int
set @id=100
set @sql='select * from test where id='+cast(@id as varchar)
print @sql
exec @sql

B. 如何執行綁定變數的SQL

1. 認識綁定變數:
綁定變數是為了減少解析的,比如你有個語句這樣
select aaa,bbb from ccc where ddd=eee;
如果經常通過改變eee這個謂詞賦值來查詢,像如下
select aaa,bbb from ccc where ddd=fff;
select aaa,bbb from ccc where ddd=ggg;
select aaa,bbb from ccc where ddd=hhh;
每條語句都要被資料庫解析一次,這樣比較浪費資源,如果把eee換成「:1」這樣的綁定變數形式,無論ddd後面是什麼值,都不需要重復解析

java實現綁定變數的方法:

[java] view plain
PreparedStatement pstmt = con.prepareStatement("UPDATE employees SET salay = ? WHERE id = ?");
pstmt.setBigDecimal(1, 15.00);
pstmt.setInt(2, 110592);
/result statmement: UPDATE employees SET salay = 15.00 WHERE id = 110592
pstmt.executeQuery();

假設要將id從1到10000的員工的工資都更新為150.00元,不使用綁定變數,則:[java] view plain sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 1"); sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 2"); sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 3"); sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 4"); .... sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 10000"); 使用綁定變數,則:
[java] view plain PreparedStatement pstmt; for (id = 1; id < 10000; id++) { if (null == pstmt) pstmt = con.prepareStatement("UPDATE employees SET salay = ? WHERE id = ?"); pstmt.setBigDecimal(1, 150.00); pstmt.setInt(2, id); pstmt.executeQuery(); } 二者區別在於,不用綁定變數,則相當於反復解析、執行了1w個sql語句。使用綁定變數,解析sql語句只用了一次,之後的9999次復用第一次生成的執行計劃。顯然,後者效率會更高一些。

2. 什麼時候不應該/不必要使用綁定變數
a. 如果你用數據倉庫,一條大查詢一跑幾個小時,根本沒必要做綁定變數,因為解析的消耗微乎其微。b. 變數對優化器產生執行計劃有很重要的影響的時候:綁定變數被使用時,查詢優化器會忽略其具體值,因此其預估的准確性遠不如使用字面量值真實,尤其是在表存在數據傾斜(表上的數據非均勻分布)的列上會提供錯誤的執行計劃。從而使得非高效的執行計劃被使用。

3. 綁定變數在OceanBase中的實現
目前OceanBase中實現了綁定變數,目的主要是為了編程方便,而不是為了降低生成執行計劃的代價。為什麼呢?因為OceanBase中目前使用的是一種」靜態執行計劃「,無論什麼Query,執行流程都一樣。OB在前端代理ObConnector中實現綁定變數,將用戶傳入的變數進行to_string()操作,替代SQL語句中相應的部分,形成一個完整的SQL。然後這個SQL傳遞給MS,MS按照標准流程來解析和執行。相信不遠的將來,OB將會實現真正意義上的綁定變數,讓用戶享受到綁定變數帶來的好處。

C. 在SQL語句中使用變數

WHEREtemperature='31'"; 變成 WHEREtemperature= t 然後執行看看控制台給你打出來的SQL是什麼樣的 看看這個T的表示形式 缺什麼哪不對就改唄 比如控制台打出來的WHEREtemperature=31 如果想要引號 拼字元串還不好說嗎 自己動手多試試

D. 關於SQL語句中使用變數的問題

插入進去的數據的類型不匹配. 以int型和nvarchar型為例,其他的像日期型的你自己發揮.

問:
存儲過程這樣的:
CREATE PROCEDURE insertxuesheng @xuehao int,@xingming varchar,@banji varchar,@zhuanye varchar,@nianling int,@xingbie varchar AS
insert 學生(學號,姓名,班級,專業,年齡,性別) values(@xuehao,@xingming,@banji,@zhuanye,@nianling,@xingbie)
代碼這樣的:
SqlCommand cmd = new SqlCommand("insertxuesheng", conn);
cmd.CommandType = CommandType.StoredProcere;
cmd.Parameters.AddWithValue("@xuehao", TextBox1.Text);
cmd.Parameters.AddWithValue("@xingming",TextBox2.Text);
cmd.Parameters.AddWithValue("@banji", TextBox3.Text);
cmd.Parameters.AddWithValue("@zhuanye", TextBox4.Text);
cmd.Parameters.AddWithValue("@nianling", TextBox5.Text);
cmd.Parameters.AddWithValue("@xingbie", TextBox6.Text);
cmd.ExecuteNonQuery();

插入數據後我去看資料庫里的表,發現只有學號和年齡有數據,其他都是空值,怎麼回事

答:
傳入的數據類型不對.

因為學號和年齡是int型,所以傳入TextBoxN.Text可以. 因為這時TextBoxN.Text = " 123", 實際上的SQL語句中就是:xuehao=123

而針對其他的欄位,則都是字元型的,因此 在SQL語句中應該是: xingming = 'abc' .

而:cmd.Parameters.AddWithValue("@xingming",TextBox2.Text);
執行的結果是: xingming=abc.這當然就不行啦.

所以改為: cmd.Parameters.AddWithValue("@xingming","'" + TextBox2.Text + "'"); 就是給TextBoxN.Text前後各加一個引號再傳給存儲過程.

E. 如何利用SQL Server 2012執行全局變數值及含義

如何利用SQL Server 2012執行全局變數值及含義
oracle 10g的DBMS_XPLAN包中display_cursor函數不同於display函數,display_cursor用於顯示SQL語句的真實的執行計劃,在大多數情況下,
顯示真實的執行計劃有助於更好的分析SQL語句的全過程,尤其是運行此SQL語句實時的I/O開銷。通過對比預估的I/O與真實的I/O開銷來判斷
SQL語句所存在問題,如缺少統計信息,SQL語句執行的次數,根據實際中間結果集的大小來選擇合適的連接方式等。

F. MS SQL 在存儲過程中怎樣執行用變數組合的SQL語句

創建:
create procere p_1
as
declare @empcode nvarchar(10)
declare @result nvarchar(20)
begin
set @empcode='1001'
select @result=c_name from employee where empcode=@empcode
print @result
end

執行:exec p_1

G. SQL語句中怎樣使用變數

c#語法
String strSql="SELECT id,pwd FROM Users WHERE id='"+userid+"' AND pwd='"+username+"'"
vb語法
String strSql="SELECT id,pwd FROM Users WHERE id='"&userid&"' AND pwd='"&username&"'"

H. SQL 變數執行的問題

將EXEC ( 'SELECT * FROM Person.Person WHERE FirstName = ' + @OutVar);
改為
EXEC ( 'SELECT * FROM Person.Person WHERE FirstName = ''' + @OutVar + '''');
因為firstname是字元型的,所以你要加引號。

I. sql腳本怎麼使用變數

Sql中如何給變數賦值使用set關鍵字。
例表格tt結構如圖:

下面語句聲明一個@ii_test的整型變數,然後給變數賦值,並在SQL查詢中調用變數

熱點內容
懸賞網源碼 發布:2025-01-24 10:53:14 瀏覽:733
c語言時間變數 發布:2025-01-24 10:40:24 瀏覽:869
ppiandroid 發布:2025-01-24 10:25:50 瀏覽:1001
兒童壓縮機 發布:2025-01-24 10:25:09 瀏覽:75
蘋果的允許訪問在哪裡 發布:2025-01-24 10:24:32 瀏覽:32
橡皮艇存儲 發布:2025-01-24 10:21:56 瀏覽:772
360的新機什麼配置 發布:2025-01-24 10:04:22 瀏覽:952
榮耀10方舟編譯器不卡頓了 發布:2025-01-24 09:59:59 瀏覽:503
章魚腳本助手 發布:2025-01-24 09:55:10 瀏覽:335
手游腳本論壇 發布:2025-01-24 09:54:20 瀏覽:31