StoredProcedure — 存储过程

StoredProcedure — 存储过程1.声明变量DECLARE@F001SMALLINT,           @F002INTEGER,           @F003VARCHAR(20),           @F004CHAR(20),           @F002MONEY2.赋值语句set@F001=space(40)3.条件判断(IF…ELSE)Ifc

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
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.动态定义游标

SET

@strSQL

=

‘
DECLARE   name_cursor   CURSOR   FOR  
‘

+

@inSQL


EXEC
   (
@strSQL
)

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.事务处理

BEGIN

distributed

transaction


WHILE

@@TRANCOUNT

>

0

       

commit

transaction

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,FMNAM,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

)

—
×


INSERT

INTO
name_table(
F001,F002
)

Values
(

@F001
,
@F002
,
)

—
×


INSERT
   name_table(
F001,F002
)

Values
(

@F001
,
@F002

)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164508.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 雅虎好用吗_b站上为什么不建议收藏

    雅虎好用吗_b站上为什么不建议收藏
 这几天开始使用雅虎收藏+,应该说这是雅虎中国目前最Web2.0的产品,虽然有del.icio.us在美国的经验,但收藏+并不是del.icio.us的简单汉化。详细的介绍、完备的各个浏览器下的插件,对于从del.icio.us用户来说几乎没有任何使用障碍.虽然有着不少的优点,我觉得这个产品还需要进一步改进:1)提供给用户静态URL.收藏…

    2022年10月24日
  • 自动根据汉字生成拼音_拼音分类表

    自动根据汉字生成拼音_拼音分类表pyhz_tabp2h[]={ {L”A”, L”a1″,1,L”阿啊呵腌吖锕”}, {L”A”, L”a2″,2,L”啊呵嗄”}, {L”A”, L”a3″,3,L”啊呵”}, {L”A”, L”a4″,4,L”啊呵”}, {L”A”, L”a5″,5,L”阿啊呵”}, {L”Ai”, L”ai1″,1,L”哀挨埃唉哎捱锿”},

    2022年8月12日
  • MySQL行转列实现和总结

    MySQL行转列实现和总结一、行转列实例1、准备数据CREATETABLEtb(`cname`VARCHAR(10),courceVARCHAR(10),scoreINT)ENGINE=INNODB;INSERTINTOtbVALUES(‘张三’,’语文’,74);INSERTINTOtbVALUES(‘张三’,’数学’,83);INSERTINTOtbVALUES(‘张三’,’物理…

    2022年6月12日
  • MessageDigest 详解

    MessageDigest 详解一、概述java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如MD5或SHA算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息摘要和散列码请参照《数字证书简介》MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDi

    2022年6月15日
  • error at hooking api ntprotect_read,match and write

    error at hooking api ntprotect_read,match and write 编译环境:delphi2010+windows7u,用途读取其他程序中readprocessmemory和writeprocessmemory的参数,但不知读取偏移即a+($b),b是怎么读的  一、用hook全局钩子线程钩子:已实现使用INLINEhookapi,CriticalSection临界区,dll分为动态loadlibry和静态加载问题1:对多线程目标

    2022年9月12日
  • SLAM技术分享_it技术分享社区

    SLAM技术分享_it技术分享社区同时定位与地图重建(SimultaneousLocalizationandMapping,SLAM),是机器人领域中的一项基础的底层技术,其希望机器人能在一个陌生的环境下实现自身的实时定位,同时能够重建出有关于环境的地图。随着近年无人驾驶、增强现实、虚拟现实等应用的兴起,作为实现这些应用的SLAM技术也越发引人注目。SLAM技术主要完成两项任务:自身定位与环境建图,也是让机器知道自己在哪里,已经周围的环境是啥。然而,如果想要精确的实现定位任务就不可避免的需要高精度的地图,而高精度的地图重建是需要以更

    2022年10月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号