sql函数for循环
Ⅰ Oracle PL/sql 局一中的FOR语句: 用for语句求得前100个自然数中偶数和。
mod(x,y)函数的意义是 求x除以y的余数,例如mod(5,2)=1,5除以2余1,mod(2,2)=0, 2除以2等于1余数是0,所以答案是0,这个程序块就是利用这样的求余的原理来循环判断1-100之间的偶数,凡是能被2除尽的就是偶数。
代码中FOR循环100次,i从100开始反向循环,99,98··以此类推到1截止退出循环。
if mod(i,2)=0 --
mod(i,2)=0的意思是i除以2无余数,如果无余数,则说明i是偶数(只有偶数除以2才能除尽)。
then s:=s+i; --
那么变量s加上这个偶数i变成新的s,进入到下一个循环判断,若非偶数直接进入下个循环,若为偶数s的值累加,直到循环结束,100以内所有的偶数累加成为最终的变量S。
Ⅱ mysql sql中流程控制有for循环吗
MySQL不支持FOR loops循环。
只有LOOP循环:
[begin_label:] LOOP
statement_list
END LOOP [end_label]
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SET @x = p1;
END;
LOOP实现了一个简单的循环结构,允许重复执行语句列表,该列表由一个或多个语句组成,每个语句以分号(;)分隔符结束。 循环中的语句将重复执行,直到循环终止。 一般情况,通过LEAVE终止循环。 在函数中,也可以使用RETURN,它完全退出函数,也同时终止循环。
(2)sql函数for循环扩展阅读
mysql流程控制结构:
顺序结构:程序从上往下依次执行,
分支结构:程序从两条或多条路径中选中一条去执行,
循环结构:程序在满足一定条件的基础上,重复执行一段代码。
分支结构
1、if函数
功能:实现简单的双分支
语法:
if(表达式1,表达式2,表达式3)
执行顺序:
如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
应用:任何地方(在begin end中或外面都可以)
2、case结构
情况1:类似于java中的switch语句,一般用于实现等值判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回的值1或语句1;
WHEN 要判断的值 THEN 返回的值2或语句2;
...
ELSE 要返回的值n或语句n;
END CASE;
情况2:类似于java中的多重IF语句,一般用于实现区间判断
语法;
CASE
WHEN 要判断的条件1 THEN 返回的值1或语句1;
WHEN 要判断的条件2 THEN 返回的值2或语句2;
...
ELSE 要返回的值n或语句n;
END CASE;
Ⅲ SQL中合并多条记录中某一个字段
创建表
createtabletdm01
(da01varchar(10))
insertintotdm01values('001')
insertintotdm01values('002')
insertintotdm01values('003')
insertintotdm01values('004')
insertintotdm01values('005')
执行
selectdistinctda01=
stuff((select''+da01fromtdm01twhereda01=t.da01forxmlpath('')),1,1,'')
fromtdm01
截图
Ⅳ 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