-1
我最近开始学习一些关于数据库的知识,并且我试图使它成为一个varchar2将被验证为在该值之前的所有字母字符(无数字或特殊字符)将被插入到数据库中。我似乎无法找到如何做到这一点,我有一个触发器和一个函数,但当我尝试插入一个包含特殊字符的字符串时,它允许它。我希望有人能帮助我,并且将不胜感激..在使用触发器插入之前验证PL SQL
我的代码如下...
CREATE OR REPLACE FUNCTION isAlpha (al IN VARCHAR2) RETURN CHAR IS
BEGIN
FOR i in 1..LENGTH(al) LOOP
IF ASCII(SUBSTR(al, i, 1)) < 65 OR ASCII(SUBSTR(al, i, 1)) > 90
THEN RETURN 'F';
END IF;
END LOOP;
RETURN 'T';
END isAlpha;
CREATE OR REPLACE TRIGGER valid_name
BEFORE INSERT OR UPDATE ON ACCOUNT
FOR EACH ROW
BEGIN
IF (ISALPHA(:new.name) = 'F') THEN
raise_application_error(-20001, 'Not valid name');
END IF;
END;
它编译罚款,但似乎并没有在运行时和我一起工作在Oracle SQL中相当新,所以我不确定如何调试。
Mysql和sql server是oracle的不同产品。请注意您使用的标签! – Shadow
https://www.techonthenet.com/oracle/questions/isalpha.php – OldProgrammer
空格不是字母字符。我也希望自己的实现,而不是复制别人的工作。我试图学习语法。 – Feek