Stored procedures 我需要在程序中返回true或false
我需要有关此存储函数的帮助:Stored procedures 我需要在程序中返回true或false,stored-procedures,boolean,return,Stored Procedures,Boolean,Return,我需要有关此存储函数的帮助: 该函数应返回布尔值 如果行存在,则给定两个参数,然后返回True或1(False或零) 函数必须接受2个参数 我需要返回true或false。TL;DR 我会使用一个函数(标量,或者可能是表值,但这需要更改为基于集合的方法) : 详细信息 SQL Server中没有布尔类型-最接近的是位(0/1)。存储过程只能返回一个INT,尽管(ab)以这种方式使用返回值是不寻常的,因为它旨在指示过程的成功或失败 CREATE PROCEDURE dbo.MyProc( @ke
我会使用一个函数(标量,或者可能是表值,但这需要更改为基于集合的方法) : 详细信息
SQL Server中没有布尔类型-最接近的是位(0/1)。存储过程只能返回一个
INT
,尽管(ab)以这种方式使用返回值是不寻常的,因为它旨在指示过程的成功或失败
CREATE PROCEDURE dbo.MyProc( @key varchar(12), @subkey varchar(12)) AS
RETURN (
SELECT CASE
WHEN exists
(select * from contacts where [key]=@key and [subkey]=@subkey)
THEN 1
ELSE 0
END);
更常见的情况是,您将使用输出
参数:
CREATE PROCEDURE dbo.MyOutputParamProc( @key varchar(12), @subkey varchar(12), @result BIT OUTPUT) AS
SET @result =
CASE
WHEN exists
(select * from contacts where [key]=@key and [subkey]=@subkey)
THEN 1
ELSE 0
END;
GO
或者,您可以选择一个结果,该结果将返回一行、一列
CREATE PROCEDURE dbo.MyProc( @key varchar(12), @subkey varchar(12)) AS
SELECT CASE
WHEN exists
(select * from contacts where [key]=@key and [subkey]=@subkey)
THEN 'true'
ELSE 'false'
END AS 'Result';
也就是说,由于您不更改数据,因此在这种情况下,用户定义的函数可能比PROC更可取,例如:
CREATE FUNCTION dbo.MyFunc(@key varchar(12), @subkey varchar(12))
RETURNS BIT
AS BEGIN
RETURN (SELECT CASE
WHEN exists(select * from contacts where [key]=@key and subkey=@subkey)
THEN 1
ELSE 0
END);
END;
这样称呼:
SELECT dbo.MyFunc('key', 'subkey')
最后一点——如果你需要同时检索几个键,如果性能很重要,那么你也可能需要考虑以一种基于集合的方式来接近这个问题,例如接受一个表值参数到你的PRO/FULL。
它不起作用,给了我一个错误“1”附近的错误语法。抱歉-我有几个输入错误,特别是proc/func的命名错误,[key]是一个保留字。我们可以假设这是sql server吗?如果是,请添加sql server
标记。
SELECT dbo.MyFunc('key', 'subkey')