【问题标题】:SQL get user input and further use itSQL 获取用户输入并进一步使用它
【发布时间】:2019-05-21 14:40:13
【问题描述】:

我的任务是在表EMPLOYEES 中插入一条新记录。我知道如何通过要求用户输入一个值来做到这一点,例如:

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
VALUES ('&first_name', '&last_name', '&email' ,'&hire_date', 'SA_REP' );

但是,我不想向用户询问email,而是通过将first_name 输入的第一个字母与要添加数据的人的last_name 连接来自动插入它桌子。为了做到这一点,我想我必须暂时存储插入的值,或者至少获得一些对first_namelast_name 的引用。我尝试在网上搜索,但真的一无所获。你能为我提供这个任务的最简单的解决方案吗?我正在使用 Oracle SQL Developer。

【问题讨论】:

  • 我对你使用参数有点困惑。真的需要单引号吗?
  • @GordonLinoff 我认为是这样,如下所述:geeksforgeeks.org/pl-sql-user-input。而且我宁愿不再输入电子邮件,而是使用输入的名字和姓氏来填充电子邮件值:使用 CONCAT 将它们合并,这实际上是我的任务。
  • HIRE_DATE字段的数据类型是什么?
  • @BobJarvis 属于DATE 类型

标签: sql oracle oracle-sqldeveloper sql-insert


【解决方案1】:

您可以将其包装在 PL/SQL 块中,以使用具有正确数据类型的适当变量。这也将确保date 变量的值以正确的预期格式正确输入。

DECLARE
v_first_name employees.first_name%type := '&first_name';
v_last_name  employees.last_name%type  := '&last_name';
v_hire_date  employees.hire_date%type  := TO_DATE('&hire_date_YYYYMMDD','YYYYMMDD');
BEGIN

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
VALUES (v_first_name, v_last_name, 
      substr(v_first_name,1,1)||'.'||v_last_name , v_hire_date, 'SA_REP' );
      --first letter of the first_name with last name
END;
/

结果

Enter value for first_name: John
Enter value for last_name: Doe
Enter value for hire_date_YYYYMMDD: 20190521
..
..
PL/SQL procedure successfully completed.

【讨论】:

  • 谢谢,它真的救了我的命 :)
【解决方案2】:

你应该可以这样做:

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
    VALUES ('&first_name', '&last_name', '&first_name' || '.' || '&last_name' ,'&hire_date', 'SA_REP' );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多