Sql server T-SQL 2008-值为NULL时退出
我正在寻找一种在@Value为null时退出T-SQL脚本的方法。到目前为止,我已经做到了这一点,但没有达到预期效果:Sql server T-SQL 2008-值为NULL时退出,sql-server,tsql,isnull,raiserror,Sql Server,Tsql,Isnull,Raiserror,我正在寻找一种在@Value为null时退出T-SQL脚本的方法。到目前为止,我已经做到了这一点,但没有达到预期效果: SELECT @Value, CASE WHEN @Value IS NULL RAISERROR('EXIT', 16, 1) FROM table WHERE name LIKE 'test' 也许这对你有用: DECLARE @Value INT = 1 IF( @Value IS NU
SELECT
@Value,
CASE
WHEN @Value IS NULL
RAISERROR('EXIT', 16, 1)
FROM
table
WHERE
name LIKE 'test'
也许这对你有用:
DECLARE @Value INT = 1
IF( @Value IS NULL)
BEGIN
RAISERROR('Exit',16,1)
END
ELSE
BEGIN
SELECT @Value
END
也许这对你有用:
DECLARE @Value INT = 1
IF( @Value IS NULL)
BEGIN
RAISERROR('Exit',16,1)
END
ELSE
BEGIN
SELECT @Value
END
使用光标和临时表可以获得所需的输出。不知道这是不是目标
USE AdventureWorksLT2012
DECLARE @CustomerID AS INT
DECLARE @CompanyName AS VARCHAR(MAX)
DECLARE @EmailAddress AS VARCHAR(MAX)
CREATE TABLE #output (CustomerID INT,CompanyName VARCHAR(MAX),EmailAddress VARCHAR(MAX))
DECLARE testCursor CURSOR
FOR
SELECT TOP (100)
CustomerID
,CompanyName
,EmailAddress
FROM SalesLT.Customer
ORDER BY customerID DESC;
OPEN testCursor;
FETCH NEXT FROM testCursor
INTO @CustomerID, @CompanyName, @emailAddress;
if @EmailAddress is not null
BEGIN
INSERT INTO #output values( @CustomerID, @CompanyName, @emailAddress);
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM testCursor
INTO @CustomerID, @CompanyName, @emailAddress;
if @EmailAddress is null
BEGIN
RAISERROR('Exit',16,1);
BREAK;
end
INSERT INTO #output values( @CustomerID, @CompanyName, @emailAddress);
END;
END
CLOSE testCursor;
DEALLOCATE testCursor;
SELECT * FROM #output;
DROP TABLE #output
使用光标和临时表可以获得所需的输出。不知道这是不是目标
USE AdventureWorksLT2012
DECLARE @CustomerID AS INT
DECLARE @CompanyName AS VARCHAR(MAX)
DECLARE @EmailAddress AS VARCHAR(MAX)
CREATE TABLE #output (CustomerID INT,CompanyName VARCHAR(MAX),EmailAddress VARCHAR(MAX))
DECLARE testCursor CURSOR
FOR
SELECT TOP (100)
CustomerID
,CompanyName
,EmailAddress
FROM SalesLT.Customer
ORDER BY customerID DESC;
OPEN testCursor;
FETCH NEXT FROM testCursor
INTO @CustomerID, @CompanyName, @emailAddress;
if @EmailAddress is not null
BEGIN
INSERT INTO #output values( @CustomerID, @CompanyName, @emailAddress);
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM testCursor
INTO @CustomerID, @CompanyName, @emailAddress;
if @EmailAddress is null
BEGIN
RAISERROR('Exit',16,1);
BREAK;
end
INSERT INTO #output values( @CustomerID, @CompanyName, @emailAddress);
END;
END
CLOSE testCursor;
DEALLOCATE testCursor;
SELECT * FROM #output;
DROP TABLE #output
CASE
用于在非命令性上下文中(例如在SELECT
中)做出决策如果在过程上下文中使用,例如在查询或DDL语句之外的T-SQL批处理。CASE
是一个表达式(如a+b
),它最终返回一个单一的原子值(一个INT
,一个VARCHAR
)-但它不能用于程序流控制-如果,则需要使用,ELSE
等。对于该案例,当在非命令性上下文中(例如在选择中)做出决策时,使用如果在过程上下文中使用,例如在查询或DDL语句之外的T-SQL批处理。CASE
是一个表达式(如a+b
),它最终返回一个单一的原子值(一个INT
,一个VARCHAR
)-但它不能用于程序流控制-如果,则需要使用,ELSE
等等