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)
上一篇 2022年7月26日 下午10:36
下一篇 2022年7月26日 下午10:36


相关推荐

  • 举例说明一下怎么算是第一范式、第二范式、第三范式?

    举例说明一下怎么算是第一范式、第二范式、第三范式?数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住。所以我们很多人就根本不按照范式来设计数据库。

    2022年5月23日
    40
  • ora00279解决办法_oracle物化视图日志表

    ora00279解决办法_oracle物化视图日志表某物化视图在增量刷新的时候报错ora-00920,尝试全量刷新的时候,报错ora-00904。BEGINDBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’F’);END;ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误ORA-00920:无效的关系运算符ORA-06512:在”SYS.SNAPSHOT”,line…

    2026年1月30日
    4
  • freemaker判断空_python条件语句举例

    freemaker判断空_python条件语句举例if…else…<#if condition>  …<#elseif condition2>  …<#elseif condition3>  …<#else>  …</#if>只有一个if的情况:<#if x = 1>  x is 1</#if> 包含elseif的情况:

    2025年6月8日
    5
  • GLM-Image WebUI实战:3步生成高质量AI艺术作品的保姆级教程

    GLM-Image WebUI实战:3步生成高质量AI艺术作品的保姆级教程

    2026年3月12日
    2
  • 程序员的搞怪代码诗建议收藏

    满园春色关不住一串代码飘出来。日照屏幕直冒烟,遥看代码挂前川。春眠不觉晓,起来敲代码。春宵一刻值千金,完事起来敲代码。洛阳亲友如相问,就说我在敲代码。夜阑卧听风吹雨,做梦还在敲代码。举头望明月,低

    2021年12月21日
    67
  • Java课程设计_java课设「建议收藏」

    Java课程设计_java课设「建议收藏」1.代码截图:2.设计思路建立GUI界面,系统产生一个随机数(对用户不可见),然后用户输入猜测数,系统根据用户每次输入的数据给出评语(偏大,偏小,猜测成功)。当用户最终猜测成功后,就把当次的随机数和猜测次数放到文件夹内。3.遇到的问题:(1).Guess里面每次产生的随机数m和最终猜测次数n一直不知道怎么传到sava里并保存输出到文件。(2).怎么在生成的guessgame文件里追加内容,而不是每…

    2022年7月12日
    20

发表回复

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

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