参数:
存储过程的参数分为两种,输入参数和输出参数
A)输入参数
在存储过程中,参数与as的位置关系决定了该参数的性质;
(1)
as里面的变量是局部变量,只用与存储过程本身;
as外面的变量是输入参数,在调用这个存储过程的时候就要提供这个参数;
默认参数:
若存储过程需要参数而调用该参数时候不提供参数,则该存储过程无法调用。但是存在给参数设置默认参数,则不需要提供参数也可以调用存储过程;
B)输出参数
在输入参数后面加OUTPUT关键词
调用这个存储过程,在输出参数后必须加OUTPUT关键词;
补充:创建一个变量,用于调用该存储过程。DECLARE
Ps:在创建一个存储过程后,不能在重复调用原来的存储过程名,可以将create修改为alter
当SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。 当 SET NOCOUNT 为
OFF 时,返回计数。
Select top 1 from 表名;子句含义为查询结果只显示首条记录;
举个例子:ALTER --存在的存储过程,若是不存在就用create
ALTER PROCEDURE 存储过程名字
@uniqueID varchar(32)--参数(一个或者多个)
AS
BEGIN
SET NOCOUNT ON;--赋值-一次只能给一个变量赋值
–UPDATE databaseK3 SET
–isDelete = “1” ,
–operationType = “2”
–WHERE uniqueID = 1
DECLARE @id INT;–定义一个变量id
SELECT TOP 1 @id = id
FROM databaseK3
WHERE (uniqueID = @uniqueID)
ORDER BY id DESC;
–(1)查询首行记录
UPDATE databaseK3 SET
isDelete = ‘1’,
operationType = ‘2’,
updateTime = GETDATE()
WHERE (id = @id);
–(2)修改-将databaseK3中的三个字段修改,当id=参数时候
END
输入参数命名自定义,只要确认在调用该存储过程的时候,参数的数量,顺序,数据类型一一对应即可。
**
例子:
**
ALTER PROCEDURE [dbo].[sp_d_lg_insert] @rmibNumber varchar(50),--原材料检验批次号(抓取送检单号)
@materialName VARCHAR(50), --原材料名称(新增)
@borMaterials VARCHAR(50),--原材料品牌
@RawmManufacturer VARCHAR(50),--原材料制造商
@oorMaterials VARCHAR(50),--原材料产地
@mrmSpecification VARCHAR(50),--原材料规格型号
@incomDate date,--来料检验日期YYYY-MM-DD
@tensileStrength int,--(抗拉)检验结果是否合格 默认合格0
@isQualify int,--(绝缘操作杆(拉杆))检验结果是否合格 默认合格0
@quantity int --送检数量(新增)
--注释:ALTER PROCEDURE [数据库].[函数名]@ 外部参数 数据类型,
--注释:as DECLARE 内部参数
AS
DECLARE
@serialNo VARCHAR(50)--序列号(随机编码RGJ00001)
DECLARE
@rmbNumber VARCHAR(50)--原材料批次号(送检单号+送检数量001)增加送检单号字段,检验手工录入
DECLARE
@manufactureDate DATE--原材料出厂日期(来料日期往前推1个星期)
DECLARE
@t int = 1 --常量
if not exists(select top 1 rmibNumber
from d_lg_remove
where rmibNumber = @rmibNumber)
begin
while @t <= @quantity
BEGIN
--SET NOCOUNT ON;
SET @serialNo = 'RGL' + RIGHT('00000' + CONVERT(VARCHAR(50), @t), 5)
set @rmbNumber = 'JULG' + RIGHT('00000' + CONVERT(VARCHAR(50), @t), 5)
set @manufactureDate = DATEADD(dd, -7, @incomDate)
INSERT INTO d_lg_remove (serialNo, rmibNumber, rmbNumber, borMaterials, RawmManufacturer,
oorMaterials, mrmSpecification, manufactureDate, incomDate,
tensileStrength, isQualify, materialName)
VALUES (@serialNo, @rmibNumber, @rmbNumber, @borMaterials, @RawmManufacturer, @oorMaterials,
@mrmSpecification, @manufactureDate, @incomDate, '0', '0', @materialName)
set @t += 1
END
end
待写