我正忙着写一张旧试卷,其中一题如下
研究以下表格并回答以下问题:
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')我的问题
发布于 2014-06-26 19:53:07
你在找这样的东西吗?
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发布于 2014-06-26 19:54:59
试试这样的东西。使用解码和设置参数的默认值会有所帮助。
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;发布于 2014-06-26 21:04:17
首先必须在数据库表中找到主键数据
如果在DBtable中存在数据(具有当前主键值)
然后执行更新sql查询。
else执行插入查询。
使用前面对您的问题的回答完成数据库检查。
https://stackoverflow.com/questions/24438033
复制相似问题