sqlif循環
⑴ sql中如何使用IF語句
SQL中的if語句與偽代碼的寫法很相似,即:
IF (條件) then
執行語句體
END IF;
舉例:
begin
if 1 > 0 then
dbms_output.put_line('1>0');
end if;
end;
⑵ 資料庫SQL語言
SQL語言包含以下功能:
一:數據查詢語言(DQL:Data Query Language):
其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER
BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
二:數據操作語言(DML:Data Manipulation Language):
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用於添加,修改和刪除表中的行。也稱為動作查詢語言。
三:事務處理語言(TPL):
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:數據控制語言(DCL):
它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對資料庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。
五:數據定義語言(DDL):
其語句包括動詞CREATE和DROP。在資料庫中創建新表或刪除表(CREAT TABLE 或 DROP
TABLE);為表加入索引等。DDL包括許多與人資料庫目錄中獲得數據有關的保留字。它也是動作查詢的一部分。
六:指針控制語言(CCL):
它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用於對一個或多個表單獨行的操作。
⑶ SQL語句中 if(task.bt_flag = '是',1,0)是什麼意思
mysql手冊中如是說:
IF(expr1,expr2,expr3)
如果 expr1 為真(expr1 <> 0 以及 expr1 <> NULL),那麼 IF() 返回 expr2,否則返回 expr3。IF() 返回一個數字或字元串,這取決於它被使用的語境:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
如果 expr2 或 expr3 明確地為 NULL,那麼函數 IF() 的返回值類型為非 NULL 列的類型。(這在選擇在 MySQL 4.0.3 中新加入)。 expr1 是作為一個整數值被計算的,這就意味著,如果測試的是一個浮點型或字元串值,就必須進行比較操作:
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
在上面第一種情況下,IF(0.1) 返回 0,是因為 0.1 被轉換為一個整數值,返回 IF(0) 的測試結果。這可能不是你所期望的。在第二種情況下,比較測試原浮點數是否為一個非零值。比較的結果被作為整數使用。 預設的 IF() 返回值類型 (當結果存儲在臨時表中時,這是非常重要的) 在 MySQL 3.23 中按下列方式確定: 表達式 返回值
表達式(expr2)或表達式(expr3)返回值為字元串 字元串
表達式(expr2)或表達式(expr3)返回值為浮點型值 浮點型
表達式(expr2)或表達式(expr3)返回值為整型 整型
如果表達式(expr2)和表達式(expr3)均是字元串,同時兩個字元串均是忽略字母大小寫的,那麼返回值也是忽略字母大小寫的(從 MySQL 3.23.51 開始)。
⑷ oracle sql語言中如何寫if的判斷,並循環
咦,剛有回答你一個問題。你這個是只判斷table1.number>table2.number情況下才update。其他情況不考慮。
update
table1
t3
set
t3.number
=
(select
number
from
(select
t1.id,
t1.number
-
t2.number
number
from
table1
t1,
table2
t2
where
t1.id
=
t2.id)
t4
where
t3.id
=
t4.id
and
t4.number
>
0)
where
t3.id
in
(select
t1.id
from
(select
t1.idt1.number
-
t2.number
number
from
table1
t1,
table2
t2
where
t1.id
=
t2.id)
t4
where
t4.number
>
0);
commit;
⑸ sql中,while和IF,能互相代替嗎
while和IF,能互相代替嗎,回答是不能:
程序最基本的結構是三種,順序、選擇,循環
還有關於where 1=1 的寫法,在實際用的時候經常會這樣寫的
一、如果用 select * into #tmpb from A where 1=1
則就是把A表的表結構復制到B表中
二、在寫程序時,查詢通常在前台程序中用到多個查詢條件,現在為空的則不用寫得SQL 現在如果用了 where 1=1 ,後面的條件就可以直接跟 and 條件,而不是判斷是不是第一條了.
SQLOS 是不會處理where 1=1 的,只是方便我們書寫,我也經常用where 1=1
⑹ sql內嵌游標怎麼插if
在第一個游標循環的end前插入空行
⑺ 用oracle SQL 查詢結果集 用集循環 並用集的列做if條件 滿足條件後集的列批量插
declare
cursor my_cursors is select * from t1 where 1=1 --定義游標
my_cursor varchar2(40); --這個數據類型根據自己的情況修改。
begin
for my_cursor in my_cursors loop
if my_cursor.n1=1 then
---做你的循環里內容
end if;
end loop;
end
⑻ sql server 里有循環語句嗎 沒有請看描述
如何利用connection對象連接數據源?
用一個connnection 對象,只要指定一個connection字元串,目的是用來指定你想要聯結的數據源,然後調用open方法來建立鏈接。
通過connection string提供的信息用OPEN方法可以非常輕松的建立與數據的連接。如果你決定用connection對象進行工作,那麼你可以用它的STATE屬性。如果connection對象被打開了那麼它的返回值為adstateopen,如果不是它的返回值為adstateclosed.下面的例子是利用odbc建立與SQL的連接。
Sub ConnectionExample1()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC打開連接.
cnn.Open "Pubs", "sa", ""
' 檢查是否完成連接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
關閉connection對象
cnn.Close
End Sub
如果你只需要連接一個數據源。下面的代碼要比上面的簡單。作為選擇,你可以創建一個connection對象,在調用open方法前你可以先設置ConnectionString屬性。這種方法容許你連接一個數據源後再重新用這個對象再連接另一個數據源。
Sub ConnectionExample2()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC DSN 建立連接
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.Open
' 檢查是否與數據源建立了連接.
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉connection對象
cnn.Close
End Sub
在你對CONNECTION對象建立連接前,你可以設置它的其它屬性。例如,你可以設置連接超時。
Sub ConnectionExample3()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 設置CONNECTION屬性
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.ConnectionTimeout = 30
' 打開connection 對象
cnn.Open
' 檢查是否已經連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉connection對象
cnn.Close
End Sub
ConnectionString屬性的語法結構假定數據源已經被建立或利用系統管理員的身份使用ODBC.不依靠存在的odbc數據源變得流行起來。這樣就減輕了安裝的負擔。下面的例子是一個連接SQL SERVER的可選擇性的方法,僅依靠本身存在的odbc driver
. Sub ConnectionExample4()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'利用引用ODBC DRIVER打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' Find out if the attempt to connect worked.
'檢查是否已經建立連接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉CONNECTION對象
cnn.Close
End Sub
現在ODBC DRIVER 有更廣的變化,你可以用ADO和數據源對話。不久將會有更的的OLE DB提供者與數據源建立連接。The Microsoft® OLE DB Provider for ODBC是當前ADO默認的提供者。你能用不同的提供者設置CONNECTION對象的provider屬性。
Sub ConnectionExample5()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'設置PROVIDER屬性利用OLE DB Provider for ODBC
cnn.Provider = "MSDASQL"
'用ODBC DSN打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'檢查是否連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉CONNECTION對象
cnn.Close
End Sub
上面的代碼設置PROVIDER屬性不是必須因為ADO的默認提供者就是OLE DB PROVIDER FOR ODBC.這里只是認你知道當你用其它的OLE DB PROVIDERS時如何設置。
我如何用CONNECTION對象執行COMMAND?
CONNNETION的EXECUTE方法用來發送一個COMMAND(一個SQL指令或其它的文本信息)到數據源。如果在SQL指令中要求返回幾行記錄集,一個RECORDSET對象將會被自動的建立。
Sub ConnectionExample6()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用 ODBC driver 建立連接.
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 執行SQL 語句創立一個RECORDSET對象.
Set rs = cnn.Execute("Select * From authors")
' 顯示第一個 author.
MsgBox rs("au_fname") & " " & rs("au_lname")
' 斷開連接
rs.Close
End Sub
記住用EXECUTE返回的RECORDSET是只讀的,並且是僅向前游標。如果你需要用RECORDSET物件的更多函數,你首先要創建RECORDSET物件並設置想要設置的屬性然後用OPEN方法打開它來執行查詢和返回想要得到的游標類型.
在下面的例子中,COMMAND物件執行刪除指令,由於沒有數據集需要返回,你不需要額外的用RECORDSET物件.刪除了多少行數據?你可以通過RECORDSAFFECTED參數知道它.
Sub ConnectionExample7()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
'引用ODBC DRIVER建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'向數據源發送刪除指令
cnn.Execute ("Delete From authors Where au_id = '011-01-0111'")
' 檢查有多少行數據被刪除
Set rs = cnn.Execute("Select @@rowcount")
' 顯示第一個欄位
MsgBox rs(0) & " rows deleted"
'關閉連接
rs.Close
End Sub
下面的例子,這個COMMAND通過指定的存儲過程的名字運行數據源的存儲過程.由於需要返回數據,所以你必需建立RECORDSET物件。
Sub ConnectionExample8()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用ODBC DRIVER來建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 建立RECORDSET對象來運行存儲過程
Set rs = cnn.Execute("Exec byroyalty 50")
' 通過循環來顯示AUTHOR的ID
Do While Not rs.EOF
MsgBox rs("au_id")
rs.MoveNext
Loop
' 斷開連接
rs.Close
End Sub