我正忙着一本旧试卷,其中一个问题如下:
研究下表并回答以下问题:
CREATE TABLE CARDHOLDERS(
CH_ID INTEGER IDENTITY,
CH_NAME VARCHAR(50),
CH_SURNAME VARCHAR(50),
CH_IDNUMBER CHAR(13),
CH_CARDNUMBER CHAR(13),
CH_STATUS CHAR(2),
CH_CREATE_DATE DATETIME,
CH_LAST_CHANGE_DATE DATETIME)
编写商店程序以添加或编辑持卡人信息。进行必要的验证检查以确保数据正确。
我的回答
Create Procedure add_ch (@CH_NAME, @CH_SURNAME...)
AS
BEGIN
INSERT INTO CARDHOLDERS VALUES (@CH_NAME, @CH_SURNAME...)
END
运行程序
EXECUTE add_ch ('Peter', 'Kemp')
我的问题
答案 0 :(得分:0)
你在找这样的东西吗?
CREATE PROCEDURE add_ch (@CH_NAME , @CH_SURNAME...)
AS
BEGIN
DECLARE @count INT
SET @count =
(SELECT count (*)
FROM CARDHOLDERS
WHERE CH_NAME = @CH_NAME AND CH_SURNAME = @CH_SURNAME)
IF @count = 0
INSERT INTO CARDHOLDERS
VALUES (@CH_NAME, @CH_SURNAME...)
else Print'This user already exsit.'
END
答案 1 :(得分:0)
尝试这样的事情。使用解码和参数设置默认值会有所帮助。
create or replace procedure add_ch
(
CHID INTEGER := -1,
CHNAME VARCHAR := '@',
CHSURNAME VARCHAR := '@',
CHIDNUMBER CHAR := '@',
CH_CARDNUMBER CHAR := '@',
CHSTATUS CHAR := '@',
CHCREATE_DATE DATETIME := '01-Jan-1900',
CHLAST_CHANGE_DATE DATETIME:= '01-Jan-1900'
)
as
begin
update cardholders
set CH_NAME = decode( CHNAME,'@',CH_NAME,chname ),
CH_SURNAME = decode( CHSURNAME,'@',CH_SURNAME, CHSURNAME),....
where CH_ID = CHID;
if sql%notfound
then
insert into cardholders
(
CH_ID,
CH_NAME,
CH_SURNAME,
CH_IDNUMBER,
CH_CARDNUMBER,
CH_STATUS,
CH_CREATE_DATE,
CH_LAST_CHANGE_DATE
)
values
(
CHID,
CHNAME,
CHSURNAME,
CHIDNUMBER,
CH_CARDNUMBER,
CHSTATUS CHAR,
CHCREATE_DATE,
CHLAST_CHANGE_DATE
);
end;
答案 2 :(得分:0)
首先您必须找到数据库表中的主键数据
如果在 DBtable 中存在数据(具有当前主键值)
然后执行更新sql查询
<强>否则强> 执行插入查询。
使用您问题的上一个答案完成数据库检查。