null 的 Oracle 案例
Oracle case for null
我已经搜索这个问题很长时间了,并且在这个网站上经历了几个类似的问题,但无法解决我的问题。我有一个存储过程,其中我有一个参数 SP_BRANCH_ID,我想要一个案例,如果它为 null,那么我的 table 中的 fkBranchId = null 被检索或者 [=14= 中指定的那些].
PROCEDURE USP_GET_TAX_RATES_BY_ID(SP_CURSOR OUT T_CURSOR,SP_BRANCH_ID IN NUMBER)
IS
BEGIN
OPEN SP_CURSOR FOR
SELECT "TaxRates".* from "TaxRates" where "IsDeleted" = 'N' AND "fkBranchId" =(
case when SP_BRANCH_ID is null then null else (SP_BRANCH_ID) end );
END USP_GET_TAX_RATES_BY_ID;
当 SP_BRANCH_ID 为 null 时,您正在分配 "fkBranchId" = NULL
,这在 Oracle 中是错误的用法。
使用 IS NULL
进行空检查。
PROCEDURE USP_GET_TAX_RATES_BY_ID(SP_CURSOR OUT T_CURSOR,SP_BRANCH_ID IN NUMBER)
IS
BEGIN
OPEN SP_CURSOR FOR
SELECT "TaxRates".* from "TaxRates"
WHERE "IsDeleted" = 'N'
AND ( "fkBranchId" = SP_BRANCH_ID OR (SP_BRANCH_ID IS NULL AND "fkBranchId" IS NULL))
END USP_GET_TAX_RATES_BY_ID;
您可以用字符串替换空值检查
SELECT "TaxRates".* from "TaxRates"
WHERE "IsDeleted" = 'N'
and NVL("fkBranchId" ,'null')=NVL(SP_BRANCH_ID,'null');
我已经搜索这个问题很长时间了,并且在这个网站上经历了几个类似的问题,但无法解决我的问题。我有一个存储过程,其中我有一个参数 SP_BRANCH_ID,我想要一个案例,如果它为 null,那么我的 table 中的 fkBranchId = null 被检索或者 [=14= 中指定的那些].
PROCEDURE USP_GET_TAX_RATES_BY_ID(SP_CURSOR OUT T_CURSOR,SP_BRANCH_ID IN NUMBER)
IS
BEGIN
OPEN SP_CURSOR FOR
SELECT "TaxRates".* from "TaxRates" where "IsDeleted" = 'N' AND "fkBranchId" =(
case when SP_BRANCH_ID is null then null else (SP_BRANCH_ID) end );
END USP_GET_TAX_RATES_BY_ID;
当 SP_BRANCH_ID 为 null 时,您正在分配 "fkBranchId" = NULL
,这在 Oracle 中是错误的用法。
使用 IS NULL
进行空检查。
PROCEDURE USP_GET_TAX_RATES_BY_ID(SP_CURSOR OUT T_CURSOR,SP_BRANCH_ID IN NUMBER)
IS
BEGIN
OPEN SP_CURSOR FOR
SELECT "TaxRates".* from "TaxRates"
WHERE "IsDeleted" = 'N'
AND ( "fkBranchId" = SP_BRANCH_ID OR (SP_BRANCH_ID IS NULL AND "fkBranchId" IS NULL))
END USP_GET_TAX_RATES_BY_ID;
您可以用字符串替换空值检查
SELECT "TaxRates".* from "TaxRates"
WHERE "IsDeleted" = 'N'
and NVL("fkBranchId" ,'null')=NVL(SP_BRANCH_ID,'null');