当前位置:首页 » 编程语言 » SQL的存储过程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

SQL的存储过程

发布时间: 2022-02-09 02:52:21

sql存储过程怎么用!~~

存储过程相当于Java,C#中的函数,就按照函数的用法理解就可以了。

❷ sql存储过程

这应该是排序的存储过程吧?
with
temptbl
as
(
SELECT
ROW_NUMBER()
OVER
(ORDER
BY
ID
asc)AS
Row,
*
from
Admin
)
这一块是一个cte,即公用表达式
这里相当于一个临时表的作用,根据id(可能已经不连续了)
生成一列连续的行号
然后再从

temptbl
中取数据给据
新生成的行号
可以看一下下面的帮助你理解
-->
测试数据:@tb
declare
@tb
table([name]
int)
insert
@tb
select
1
union
all
select
3
union
all
select
4
union
all
select
5
union
all
select
10
union
all
select
12
--row_number()
函数的使用
select
id=row_number()
over(order
by
name
asc),name
from
@tb
/*
id
name
--------------------
-----------
1
1
2
3
3
4
4
5
5
10
6
12
*/

❸ 什么是SQL的存储过程

sql存储过程说简单点就是一个在t-sql下用户可以自行定义的函数,
但是与一般的函数也有不同的地方,比如它的返回值只能return(int类型),如果你要输出什么信息的话只能用output.这也是存储过程的一个特色吧,设定的参数可以有输出。讲起来有点抽象,给你个例子看看吧!
首先创建一个存储过程
create
procere
cunchuguocheng
@a
int,
@b
int,
@c
int
output
as
begin
select
@c
=
@a+@b
return(0)
end
然后调用这个存储过程
declare
@value
int,
--返回值
@c
int
--结果值
exec
@value
=
cunchuguocheng
2,2,@c
output
select
@value
as
返回值
select
@c
as
结果值
程序写的很简单,你运行一下我想你就会对存储过程有所了解了。

❹ SQL存储过程是什么

就是在sql里面,可以执行的一段程序代码,就好比软件开发,就是一段代码,来处理一些事情,
sql的存储过程就是一段代码,来处理一些事情,可以被调用执行,也可以在定时器里面调用来定时处理

❺ 如何创建SQL存储过程

步骤如下:

  1. 在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例。

  2. 展开“数据库”、sql server存储过程所属的数据库以及“可编程性”。

  3. 右键单击“存储过程”,再单击“新建存储过程”。

  4. 在“查询”菜单上,单击“指定模板参数的值”。

  5. 在“指定模板参数的值”对话框中,“值”列包含参数的建议值。接受这些值或将其替换为新值,再单击“确定”。

  6. 在查询编辑器中,使用过程语句替换 SELECT 语句。

  7. 若要测试语法,请在“查询”菜单上,单击“分析”。

  8. 若要创建sql server存储过程,请在“查询”菜单上,单击“执行”。

  9. 若要保存脚本,请在“文件”菜单上,单击“保存”。接受该文件名或将其替换为新的名称,再单击“保存”。

❻ sql语句存储过程

可以先将多个商品ID拼成一个字符串("3,4,5")再传进去
create PROCEDURE pro_deleteProct
@Uid int ,
@Pids varchar(50)
AS
declare @sql varchar(200)
BEGIN
set @sql= 'delete from Procts where ProctId = '+ convert(varchar(20),@Uid) +' and ProctId in ('+@Pids+')'
--print @sql
exec (@sql)
END
GO

❼ SQL存储过程!!!

你可以用output类型的参数。这里的输出是一个字符串,用“,”分割,你试试
IF
EXISTS
(
SELECT
*
FROM
dbo.sysobjects
WHERE
type
=
'P'
AND
name
=
'P_XXX'
)
BEGIN
DROP
PROCEDURE
[dbo].[P_XXX]
END
GO
CREATE
PROCEDURE
[dbo].[P_XXX]
(
@date
DATETIME
,
@Name
VARCHAR(MAX)
OUTPUT
)
AS
BEGIN
IF
EXISTS
(
SELECT
*
FROM
Daily
WHERE
Date
=
@date
)
BEGIN
SELECT
SUBSTRING(A.Name,
0,
LEN(A.Name))
FROM
(
SELECT
Name
+
','
FROM
@Record
FOR
XML
PATH('')
)
A
(
Name
)
END
ELSE
BEGIN
SELECT
@Name
=
''
END
END
GO
C#代码
SqlCommand
CMD
=
new
SqlCommand(“P_XXX”,DBCN);
CMD.CommandType
=
CommandType.StoredProcere;
CMD.Parameters.Add("@Name",SqlDbType.varchar,2000);
CMD.Parameters["@Name"].Direction
=
ParameterDirection.Output;

❽ sql存储过程是什么

说多了你也难得慢慢看,说简单一点,其实存储过程就是把一堆SQL代码集中在一起,形成一个固定的代码块.存储过程名字,就是代码块的名字.以后你要运行这块代码的时候,不用在把所有的代码都放上去,只需要运行这个代码块的名字就行了.

❾ SQL存储过程

CREATE PROCEDURE SP_Transfer
(
@StartDate DATETIME INPUT,
@EndDate DATETIME INPUT,
@Result int OUTPUT
)
AS
BEGIN
Select @Result = [字段名] From [表名]
WHERE indate_start = @StartDate AND
indate_end = @EndDate
END

Declare @RESULT INT;
EXEC SP_Transfer N'2009-06-30' N'2009-07-29' @RESULT

PRINT @RESULT

❿ SQL 存储过程

仔细思考一下我的解决办法是否妥当:

因为过程开头部分已经定义了4个变量,并且都赋初值为'0',

那么,我们做两处变动:

1、在你的select语句执行前,我们写上4个判断,判断这4个变量是否被传入了值,未传入时怎么样处理。

2、修改select语句的where子句(语句中有三个“=”改成like)。

过多的描述也许难以看懂,我直接写出来,新增或修改的部分,我在后面用了注释“//--★”(我的写法是基于Sybase的,你可以看懂的。当然你也可以先看一下后面的【总结】):

if exists(………………………………)
drop ……………………
go
create Proc Proc_ManualSign
@BranchId varchar(10) = '0',
……………………
……………………
@UserName varchar(50) = '0'
as

begin //--★sybase写法,用于过程开始,参考你的数据库,看是否需要加

if @BranchId = '0' //--★如果@BranchId依然为初始值(未传入参数)
select @BranchId = '%' //--★那么将@BranchId赋值为'%'

if @DepartId = '0' //--★如果@DepartId依然为初始值(未传入参数)
select @DepartId = '%' //--★那么将@DepartId赋值为'%'

if @UserId = '0' //--★如果@UserId依然为初始值(未传入参数)
select @UserId = '%' //--★那么将@UserId赋值为'%'

if @UserName = '0' //--★如果@UserName依然为初始值(未传入参数)
select @UserName = '%' //--★那么将@UserName赋值为'%'

select …………
……………………
and b.BranchId like @BranchId --机构 //--★你原来的“=”改成了“like”
and d.DepartId like @DepartId --部门 //--★你原来的“=”改成了“like”
and m.UserId like @UserId --用户Id //--★你原来的“=”改成了“like”
and u.UserName like '%'+@UserName+'%' --用户名

end //--★sybase写法,用于标注过程结束,参考你的数据库,看是否需要加

go

======================================================================

【★★--总结--★★】我的办法:

4个变量初值为'0',excute执行该过程时,if语句就要依次判断各变量的当前值,判断的结果无非两种:①.未传入值(还是'0'),②.传入了值(不是'0')

①.未传入值
if语句判断出某变量未传入值,则将该变量置为'%',那么select语句的where条件中就是该字段 like '%',也就是该字段的检索条件为任意的。

②.传入了值
传入了值,则if语句的判断结果为假(False),那么直接跳出判断去执行select语句,虽然where子句的条件中用的是 like 介词,但没有通配符'%'的话,like 的作用也就是'=',即:【like '销售部'】的作用也就是 【='销售部'】,所以也满足了输入参数的精确查询要求。

执行时:

假如什么参数也不传入,即:查询全部的信息
excute Proc_ManualSign '0', '0', '0', '0'

假如仅部门和用户ID传入参数,则
excute Proc_ManualSign '0', '开发部', '319', '0'