PROC 存储过程 一
程序员文章站
2022-05-11 15:38:58
...
use Northwind
go
--创建表以外的东西(视图、存储过程等)需要go关键字,除非创建语句在批处理的第一句。
--如没有 use northwind则可以不用go。
create proc spInsertOrder
--是定义参数不是变量 不需要DECLARE,变量不赋值为NULL,但是参数不一样!
@CustomerID nvarchar(5),
@EmployeeID int,
@OrderDate datetime =NULL,
@RequiredDate datetime =NULL,
@ShippedDate datetime=NULL,
@ShipVia int,
@Freight money,
@ShipName nvarchar(40)=NULL,
@ShipAddress nvarchar(60)=NULL,
@ShipCity nvarchar(15)=NULL,
@ShipRegion nvarchar(15)=NULL,
@ShipPostalCode nvarchar(10)=NULL,
@ShipCountry nvarchar(15)=NULL,
@OrderID int output
AS
INSERT INTO Orders
VALUES(
@CustomerID ,
@EmployeeID,
@OrderDate,
@RequiredDate ,
@ShippedDate ,
@ShipVia ,
@Freight,
@ShipName,
@ShipAddress ,
@ShipCity,
@ShipRegion ,
@ShipPostalCode ,
@ShipCountry
)
--把IDENTITY得值赋给OrderID,因为Order中的OrderID本身是不需要赋值的,是自增长的
--如果没有下面这句,则在执行该PROC时,output得值将为 NULL
select @[email protected]@IDENTITY
DECLARE @MyIdent int
--如果调用PROC是批处理的第一件事,则可以不用EXEC关键字
EXEC spInsertOrder
@CustomerId='ALFKI',
@EmployeeID=6,
@OrderDate='5/1/1999',
@ShipVia=3,
@Freight=5.00,
--调用PROC时必须使用OUTPUT的关键字,就像声明OUTPUT时一样。如果没有OUTPUT也不会报错,
--将@MyIdent的值(Null,因为前面之定义了没赋值)赋给 @OrderID
[email protected]类似于编程里的参数被传到到了方法中(存储过程),然后被赋值,然---后值再传回。
@[email protected] OUTPUT
SELECT @MyIdent as Ident
---
转载于:https://blog.51cto.com/kingheihei/1219445
上一篇: OpenStack 云主机镜像制作
下一篇: 数据存储(一)