SQL Server 存储过程 常用

判断存储过程是否存在,存在这Drop

IF (SELECT COUNT(*) FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[StoreProcedureName]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) > 0
BEGIN
	DROP PROCEDURE [dbo].[StoreProcedureName];
END;
GO

创建存储过程

CREATE PROCEDURE [dbo].[PFSA_PANA_TRACE_DATA_INS_XML] (@xml XML)
AS
BEGIN

END;
GO

变量

--创建变量
DECLARE @Lot_No            INT
DECLARE @Work_Date        varchar(20)


-- 直接赋值
set @Lot_No = 000
set @Work_Date = "ABC"

 

XML解析以及使用

CREATE PROCEDURE [dbo].[StoreProcedureName] (@xml XML)
AS
BEGIN

    -- 单个变量从XML获取赋值
    DECLARE @Work_Date		varchar(20)
    select @Work_Date = @xml.value('(/RowList/Row/@z_cass_startTime)[1]','varchar(50)')

    -- 通过Insert 直接从XML获取数据插入
    --Declare internal Variables
    DECLARE @handle            INT

    --Create XML Document
    EXEC sp_xml_preparedocument @handle OUTPUT, @xml
    --   按照顺序写入,并非按照LineName的名称写入Table中
    INSERT INTO PFSA_PANA_MV_DATA
    SELECT * 
    FROM OPENXML(@handle, N'/RowList/Row') WITH (LineNum int '@LINENUM',
        LineName nvarchar(20)	'@LINENAME',
        ZoneNum  int			'@ZONENUM', 
        ZoneName nvarchar(40)	'@ZONENAME'
    )
    
	EXEC sp_xml_removedocument @handle 

    -- 通过XML获取值,插入到临时表中
    Select
        col.value('@cellId[1]' , 'varchar(50)') AS Lot_No,
        col.value('@cellId[1]' , 'varchar(50)') as Work_Date
    INTO #tempScarpData
    from @xml.nodes('/RowList/Row') as ref(col)
END
GO

 

### SQL Server 存储过程常用的内置函数 #### 字符串操作函数 字符串操作函数用于处理字符数据。常见的有: - `LEN()`: 返回指定表达式的字符长度,不计算尾随空格[^2]。 ```sql DECLARE @str NVARCHAR(50) = 'SQL Server'; SELECT LEN(@str) AS StringLength; ``` - `SUBSTRING()`: 提取子字符串。 ```sql DECLARE @text NVARCHAR(MAX) = 'Hello, World!'; SELECT SUBSTRING(@text, 8, 7) AS SubstringResult; -- 输出: World! ``` - `REPLACE()`: 替换字符串中的特定部分。 ```sql DECLARE @oldString NVARCHAR(100) = 'Old Text'; SELECT REPLACE(@oldString, 'Old', 'New') AS ReplacedText; ``` #### 数学运算函数 这些函数执行数值计算并返回结果。 - `ROUND()`: 对数值进行四舍五入。 ```sql DECLARE @number DECIMAL(9,4) = 123.4567; SELECT ROUND(@number, 2) AS RoundedNumber; -- 结果为123.46 ``` - `ABS()`: 获取绝对值。 ```sql DECLARE @value FLOAT = -98.6; SELECT ABS(@value) AS AbsoluteValue; ``` #### 转换函数 转换函数可以改变数据类型的表示形式。 - `CAST()` 或者 `CONVERT()`: 将一种数据类型显式转换成另一种。 ```sql DECLARE @intVal INT = 123; SELECT CAST(@intVal AS VARCHAR) AS ConvertedToInt; ``` #### 时间日期函数 时间日期函数帮助管理和操作日期时间戳记。 - `GETDATE()`: 返回当前系统的日期和时间。 ```sql SELECT GETDATE() AS CurrentDateTime; ``` - `DATEDIFF()`: 计算两个给定日期之间的差异。 ```sql DECLARE @startDate DATETIME = '2023-01-01', @endDate DATETIME = '2023-12-31'; SELECT DATEDIFF(DAY, @startDate, @endDate) AS DaysBetweenDates; ``` 以上列举了一些最常使用的SQL Server内置函数,在实际应用中可以根据具体需求灵活运用。对于性能敏感的应用场景,应当注意避免不必要的重复调用相同的功能,比如获取字符串长度时应该先存入局部变量再多次引用该变量而不是反复调用`LEN()`这样的做法来提高效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值