首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于添加和编辑数据的SQL过程

用于添加和编辑数据的SQL过程
EN

Stack Overflow用户
提问于 2014-06-26 18:52:19
回答 3查看 127关注 0票数 0

我正忙着写一张旧试卷,其中一题如下

研究以下表格并回答以下问题:

代码语言:javascript
运行
复制
 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)

编写一个存储过程来添加或编辑持卡人信息。进行必要的验证检查以确保数据是正确的。

我的答案

代码语言:javascript
运行
复制
Create Procedure add_ch (@CH_NAME, @CH_SURNAME...)
AS
BEGIN
INSERT INTO CARDHOLDERS VALUES (@CH_NAME, @CH_SURNAME...)
END

运行过程

代码语言:javascript
运行
复制
EXECUTE add_ch ('Peter', 'Kemp')

我的问题

  • 上面的程序会给出正确的结果吗?
  • 问题是‘写一个存储过程来添加或编辑持卡人信息’我如何将添加过程与编辑持卡人程序结合起来,或者我是否正确地假设我可以有不同的步骤?
EN

回答 3

Stack Overflow用户

发布于 2014-06-26 19:53:07

你在找这样的东西吗?

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-06-26 19:54:59

试试这样的东西。使用解码和设置参数的默认值会有所帮助。

代码语言:javascript
运行
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2014-06-26 21:04:17

首先必须在数据库表中找到主键数据

如果DBtable中存在数据(具有当前主键值)

然后执行更新sql查询。

else执行插入查询。

使用前面对您的问题的回答完成数据库检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24438033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档