1.声明变量
DECLARE
@F001
SMALLINT
,
@F002
INTEGER
,
@F003
VARCHAR
(
20
),
@F004
CHAR
(
20
),
@F002
MONEY
2.赋值语句
set
@F001
=
space
(
40
)
3.条件判断(IF...ELSE)
If
condition
Begin
[
statements
]
END
ELSE
BEGIN
[
elseifstatements
]
END
4.多分支判断(case...when...then...else...end)
SET
@F011
=
CASE
WHEN
[
testexpression1
]
THEN
@F001
WHEN
[
testexpression2
]
THEN
@F002
WHEN
[
testexpression3
]
THEN
@F003
WHEN
[
testexpression4
]
THEN
@F004
END
5.循环(while)
While
condition
Begin
[
statements
]
End
6.动态定义游标
7.遍历游标
FETCH
NEXT
FROM
name_cursor
into
@F001
,
@F002
WHILE
@@FETCH_STATUS
=
0
BEGIN
FETCH
NEXT
FROM
name_cursor
into
@F001
,
@F002
END
说明:FETCH_STATUS检索到数据返回0,失败返回-1,可判断是否滚动未到结尾。 8.获得游标行数
SET
@RECCNT
=
@@ROWCOUNT
9.事务处理
10.字符串连接
SET
@m_sql
=
@m_sql
+
'
Where F001 =
'''
+
@F001
+
''''
SET
@m_sql
=
@m_sql
+
'
F002 =
'
+
CONVERT
(
varchar
,
@F002
)
11.创建临时表存储外部数据表 说明:临时过程用 # 和 ## 命名,可以由任何用户创建。创建过程后,局部过程的所有者是唯一可以使用该过程的用户。
CREATE
TABLE
#DMPARHED (FMCD
int
,FMNAM
varchar
(
50
),MGYO1
smallint
,
constraint
DMPARHED_P
primary
key
(FMCD))
SET
@asql
=
''
SET
@asql
=
@asql
+
'
INSERT INTO #DMPARHED
'
SET
@asql
=
@asql
+
'
SELECT FMCD,FMNAM,MGYO1 FROM
'
SET
@asql
=
@asql
+
'
OPENQUERY(Lk_MDB_NEO32,
''
SELECT FMCD,MGYO1 FROM DMPARHED
'
SET
@asql
=
@asql
+
'
WHERE SYSNO = 1
''
)
'
execute
(
@asql
)
创建临时表的另类方法:
select
a.name,a.password
from
with
as
temp1
select
*
from
emp (
select
*
from
temp1
union
select
*
from
temp1) a
where
a.name
=
'
hao
'
;
12.存储过程的调用及返回值 (1)存储过程的声明
CREATE
PROCEDURE
name_produce
@F001
VARCHAR
(
20
),
@F002
SMALLINT
OUTPUT
(2)VB.NET调用存储过程
Private
sqlCmd
As
New
OleDb.OleDbCommand sqlCmd.CommandText
=
"
prNK3020SC03
"
sqlCmd.CommandType
=
CommandType.StoredProcedure
Dim
parampre1
As
OleDb.OleDbParameter
=
sqlCmd.Parameters.Add( _
New
OleDb.OleDbParameter(
"
@F001
"
, OleDb.OleDbType.VarChar,
20
, _ ParameterDirection.Input))
Dim
parampre2
As
OleDb.OleDbParameter
=
sqlCmd.Parameters.Add( _
New
OleDb.OleDbParameter(
"
@F002
"
, OleDb.OleDbType.SmallInt)) parampre2.Direction
=
ParameterDirection.Output sqlCmd.Parameters(
"
@F001
"
).Value
=
aF001 sqlCmd.Parameters(
"
@F002
"
).Value
=
aF002 sqlCmd.ExecuteNonQuery() aF002
=
sqlCmd.Parameters(
"
@F002
"
).Value.ToString()
(3)存储过程调用存储过程
DECLARE
@C001
VARCHAR
(
20
),
@C002
SMALLINT
EXEC
name_produce
@C001
,
@C002
output
CREATE
PROCEDURE
dbo.getUserName
@UserID
int
,
@UserName
varchar
(
40
) output
as
set
nocount
on
begin
if
@UserID
is
null
return
select
@UserName
=
username
from
dbo.
[
userinfo
]
where
userid
=
@UserID
return
end
13.Update语句常见错误总结
--
√
Update
name_table
set
F001
=
@F181
, F002
=
@F182
Where
F003
=
@F003
--
×
Update
name_table F001
=
@F181
, F002
=
@F182
Where
F003
=
@F003
--
×
Update
name_table
set
F001
=
@F181
, F002
=
@F182
,
Where
F003
=
@F003
--
×
Update
name_table
set
,F001
=
@F181
,F002
=
@F182
Where
F003
=
@F003
14.Insert语句常见语法错误总结
--
√
INSERT
INTO
name_table(,KEY_FIELD,BUSYOCD )
Values
(
@F001
,
@F002
)
--
×
INSERT
INTO
name_table( F001,F002 )
Values
(,
@F001
,F002 )
Values
(
@F001
,
@F002
,)
--
×
INSERT
name_table( F001,
@F002
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。