【问题标题】:how to do an insert when the month is january in oracle using stored procedure [closed]当月份是一月在oracle中使用存储过程时如何插入[关闭]
【发布时间】:2013-02-18 17:31:22
【问题描述】:
CREATE OR REPLACE PROCEDURE spInsertSale2(SALES_ID in number,PRODUCT in varchar2,UNITCOST in decimal,QUANTITY in number)
AS
BEGIN
    if to_char(sysdate,'mm') from dual = '01' then
    {
        INSERT INTO Studenta_1004195.SALES VALUES(SALES_ID,PRODUCT,UNITCOST,QUANTITY);
    }endif
END spInsertSale2;
/

【问题讨论】:

  • 您好,您的问题不应该只是代码。请描述您正在尝试做的事情,以及到目前为止您遇到的问题。
  • 大括号在 PL/SQL 中无效。请阅读 PL/SQL 参考手册。

标签: sql oracle plsql oracle11g


【解决方案1】:

您的语法已关闭:

CREATE OR REPLACE PROCEDURE spInsertSale2(
  SALES_ID in number,PRODUCT in varchar2,UNITCOST in decimal,QUANTITY in number)
AS
BEGIN
    if to_char(sysdate,'mm') = '01' then
        INSERT INTO Studenta_1004195.SALES 
        VALUES(SALES_ID,PRODUCT,UNITCOST,QUANTITY);
    end if;
END spInsertSale2;
/

【讨论】:

  • 工作得很好,谢谢。
  • @russian 没问题。我建议您在该插入上指定列名(例如insert into Studenta_1004195.SALES (a,b,c,d) values (sales_id...) 并在参数声明中使用%type 而不是放置number 等。放置列意味着如果有人添加了一个可为空的列(或不null 默认值),您的代码仍然可以工作。
【解决方案2】:

乍一看,您似乎缺少“选择”一词

AS BEGIN
if
this is where you are missing the word select
to_char(sysdate, 'mm') = '01'
etc

【讨论】:

  • 当我添加选择时,我仍然收到警告说该过程是用编译错误创建的
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2015-03-28
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
相关资源
最近更新 更多