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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • neokylin 系统_centos kde

    neokylin 系统_centos kdeNeoKylin(linux)操作系统基本操作使用的虚拟机工具是VMware虚拟机远程控制工具MobaXterm操作系统:NeoKylin操作系统,(GUI,桥接模式)NeoKylin相关操作开关机操作:init,shutdowm-t/-k/-r/-h…切换用户:suXXX查询文件/目录:ls,ll进入目录:cd绝对路径,相对路径设置别名:alias/unalias查看帮助:help/-hNeoKylin文件操作创建文件touch,vim,echo创建目录m

    2022年8月10日
    3
  • iOS的高德地图标注特定位置

    iOS的高德地图标注特定位置在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存这时只要调用自动高德地图的就行了自己写一个控制器,导入框架现在导入系统框架只要多打次就能出来了,没必要去link添加1#import”MapViewCtl.h”2#import<CoreLocation/CoreLocation.h>3#impo…

    2022年5月21日
    55
  • nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!…[通俗易懂]

    nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!…[通俗易懂]年前无心工作,上班刷知乎发现一篇分享python爬虫的文章。感觉他爬取的网站里的妹子都好好看哦,超喜欢这里的,里面个个都是美女。无奈python虽然入门过但太久没用早已荒废,最近在用nodejs重构后台接口,遂尝试用nodejs实现个爬虫。先上几张图:爬几个相册示范一下都是高清无码大图哦好了,开始准备工作吧,少年!喂!我说的是准备工作环境!你,你,还有你,你们把手上的纸巾放下!准备工作:系统环境:…

    2022年6月5日
    23
  • python菜鸟踩坑系列-pika版本带来的问题

    python菜鸟踩坑系列-pika版本带来的问题

    2021年5月16日
    205
  • 相机标定基础

    相机标定基础一.什么是摄像机标定从二维图像中恢复物体的三维信息,必须要知道空间坐标系中的物体点同它在图像平面上像点之间的对应关系,而这个对应关系是由摄像机的成像几何模型所决定的,这些几何模型参数就是摄像机参数。在大多数情况下这些参数必须通过实验才能得到,这个过程被称为摄像机标定。摄像机标定就是确定摄像机内部几何和光学特性(内部参数)以及摄像机坐标系相对于世界坐标系的三维位置和方向(外部参数)的过程。

    2022年5月11日
    56
  • mysql 添加索引卡死_mysql添加索引,查询反而变慢

    mysql 添加索引卡死_mysql添加索引,查询反而变慢依照楼主的数据,我也造了400万数据:mysql>select*fromindex_testlimit5;id1id211111111112222222222111111111122222222221111111111id1创建索引执行确实是id2谓词条件比较快:mysql>select*fromindex_testwhereid1=11111;2097152…

    2022年5月22日
    126

发表回复

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

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