Oracle 数据库 PLSQL 某些字符的子类型
Oracle Database PLSQL Subtype of certain characters
我想在 PLSQL 中创建一个只能保存以下值的子类型:'♠', '♥', '♦', '♣'
这可能吗?在我的代码中,我有 subtype suit_t is char(1)
但使用此代码可以将其他字符存储在具有此子类型的变量中。是的..我的用户很笨所以我想限制他们这样做。
我不认为直接作为子类型可以做到这一点。
我的建议是在要使用的包中有一个常量。这是一个例子:
create or replace package P_SUIT is
-- Purpose : Handle possible chars
-- Public type declarations
--type <TypeName> is <Datatype>;
-- Public constant declarations
SPADES constant char:='♠';
HEARTS constant char:='♥';
CLUBS constant char:='♣';
DIAMONDS constant char:='♦';
-- Public variable declarations
--<VariableName> <Datatype>;
-- Public function and procedure declarations
function validate(c char) return boolean;
end P_SUIT;
create or replace package body P_SUIT is
-- Private type declarations
--type <TypeName> is <Datatype>;
-- Private constant declarations
--<ConstantName> constant <Datatype> := <Value>;
-- Private variable declarations
--<VariableName> <Datatype>;
-- Function and procedure implementations
function validate(c char) return boolean is
ret_val boolean := false;
begin
if c = P_SUIT.SPADES or c = P_SUIT.HEARTS or c = P_SUIT.CLUBS or c = P_SUIT.DIAMONDS then
ret_val := true;
else
ret_val := false;
end if;
return(ret_val);
end;
begin
-- Initialization
--<Statement>;
null;
end P_SUIT;
现在在您的 PLSQL 条件中使用它:
begin
if p_suit.validate('o') then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
if p_suit.validate('♠') then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
if p_suit.validate(p_suit.HEARTS) then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
end;
我想在 PLSQL 中创建一个只能保存以下值的子类型:'♠', '♥', '♦', '♣'
这可能吗?在我的代码中,我有 subtype suit_t is char(1)
但使用此代码可以将其他字符存储在具有此子类型的变量中。是的..我的用户很笨所以我想限制他们这样做。
我不认为直接作为子类型可以做到这一点。
我的建议是在要使用的包中有一个常量。这是一个例子:
create or replace package P_SUIT is
-- Purpose : Handle possible chars
-- Public type declarations
--type <TypeName> is <Datatype>;
-- Public constant declarations
SPADES constant char:='♠';
HEARTS constant char:='♥';
CLUBS constant char:='♣';
DIAMONDS constant char:='♦';
-- Public variable declarations
--<VariableName> <Datatype>;
-- Public function and procedure declarations
function validate(c char) return boolean;
end P_SUIT;
create or replace package body P_SUIT is
-- Private type declarations
--type <TypeName> is <Datatype>;
-- Private constant declarations
--<ConstantName> constant <Datatype> := <Value>;
-- Private variable declarations
--<VariableName> <Datatype>;
-- Function and procedure implementations
function validate(c char) return boolean is
ret_val boolean := false;
begin
if c = P_SUIT.SPADES or c = P_SUIT.HEARTS or c = P_SUIT.CLUBS or c = P_SUIT.DIAMONDS then
ret_val := true;
else
ret_val := false;
end if;
return(ret_val);
end;
begin
-- Initialization
--<Statement>;
null;
end P_SUIT;
现在在您的 PLSQL 条件中使用它:
begin
if p_suit.validate('o') then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
if p_suit.validate('♠') then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
if p_suit.validate(p_suit.HEARTS) then
dbms_output.put_line('yes');
else dbms_output.put_line('no');
end if;
end;