我只想知道sql或oracle中是否有任何数据类型在不指定null或任何键约束(如主键)的情况下不接受空值。
外键是否接受空值。
答案 0 :(得分:0)
首先,我有一个问题:" sql或oracle中的任何数据类型" 。那是什么意思? Sql Server还是Oracle?无论如何,回答你的问题: 1)每个数据类型都支持null,除非它们具有非null约束。
2)外键接受空值。
答案 1 :(得分:0)
答案 2 :(得分:0)
不在SQL中,但您可以在PL / SQL中定义自己的子类型,并指定它们不接受NULL
值,然后在您的过程中使用它:
CREATE PACKAGE types_pkg IS
SUBTYPE MY_BYTE IS NUMBER(3,0) NOT NULL;
END;
/
然后,您可以在过程中使用它们,而无需在过程签名中重新声明它们是NOT NULL
。
CREATE PACKAGE BODY test_pkg IS
PROCEDURE print_value(
value TYPES_PKG.MY_BYTE
);
END;
/
CREATE PACKAGE BODY test_pkg IS
PROCEDURE print_value(
value TYPES_PKG.MY_BYTE
)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE( value );
END;
END;
/
使用NULL
值调用该过程:
BEGIN
test_pkg.print_value( NULL );
END;
/
抛出:
PLS-00567: cannot pass NULL to a NOT NULL constrained formal parameter