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


相关推荐

  • 【软件工程】-可行性研究报告

    【软件工程】-可行性研究报告软工的文档我还是比较迷茫 不知道该从哪里下手 更不知道具体的什么内容该怎么写 所以还是得站在巨人的肩膀上学习啊 GB8567 88 可行性研究报告 1 引言 1 1 编写目的为了提高机房收费管理的灵活性和效率 减轻机房工作人员的工作负担 节约时间 对机房收费业务做到快速准确管理的目的 从而降低人力 经济的更各方面的消耗 本次编写主要是为了分析廊坊师范学院是否具备研发机房收费系统

    2026年3月16日
    2
  • 博客备份工具——小收集

    博客备份工具——小收集打算长期写原创博客了,当然也就要考虑备份问题了。虽然服务器很稳定,但是一旦出什么差错,技术类的东西丢了真的很难恢复,特别痛苦。 所以收集一下可用的工具吧,针对CSDN,因为我们现在有代码片了,不知道各个工具的效果如何: 豆约翰博客备份专家V2.6_豆约翰http://www.douyuehan.com/Download1/File/5.aspx [推荐]博客备份工具B

    2022年7月25日
    16
  • Java继承的概念及方法

    Java继承的概念及方法继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:

    2022年7月8日
    28
  • creo每次都要配置config_config怎么打开

    creo每次都要配置config_config怎么打开前言每个测试用例都应该有config部分,可以配置用例级别。比如name、base_url、variables、verify、export等等案例演示fromhttprunnerimport

    2022年8月6日
    5
  • 利用Vivado进行MicroBlaze处理器应用教程

    利用Vivado进行MicroBlaze处理器应用教程目录一 创建带有 MicroBlaze 处理器的 IP 设计二 开始 IP 综合设计 步骤 三 MicroBlaze 配置窗口 配置窗口说明 第一页 WelcomePage 第二页 General 第三页 异常 第四页 缓存 第五页 MMU 第六页 调试 第七页 总线 四 MicroBlaze 处理器的交叉触发特性五 自定义逻辑六 完成连接 CompletingCo 一 创建带有 MicroBlaze 处理器的 IP 设计使用 Vivado 进行 Micr

    2026年2月13日
    4
  • Amoeba配置读写分离

    Amoeba配置读写分离读写分离配置本想采用 MysqlProxy 来实现读写分离 奈何其使用的 lua 脚本着实让人头痛 最后决定采用国人开发的开源数据库代理中间件 Amoeba 使用 Amoeba 只需要简单的 xml 配置 就可以很容易地实现读写分离 Amoeba 处于应用程序和数据库服务器之间 充当一个中间代理层 其支持负载均衡 高可用性 Query 过滤 读写分离 可路由相关的 query 到目标数据库 可并发请求多

    2026年3月17日
    2

发表回复

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

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