PLSQL construction a new function

I need a help I'm make a function in plsql but I'm beginner

Challenge: Web a label has (imput) in less than 72hours it will not be able to leave stock Could you help me or tell me if I'm on the right path?

create or replace FUNCTION CHECACODENTRADA
(
    P_CODPRO  IN VARCHAR2
)
    RETURN VARCHAR2
AS 
    v_database DATE;
BEGIN 
    v_database := TRUNC (SYSDATE);

    IF (p_CODPRO == '08932010','08932030','08942020','08942010','08942310','08932210')
    THEN 
        SELECT SYSDATE+3/72 FROM DUAL 
            IF SYSDATE+3/72 >= 

Upvotes: 0

Views: 61

Answers (1)

Koen Lostrie
Koen Lostrie

Reputation: 18565

Welcome to stack overflow. I suggest you start by writing a function shell and then adding functionality to it.

create or replace FUNCTION CHECACODENTRADA
(
    P_CODPRO  IN VARCHAR2
) RETURN VARCHAR2
AS 
BEGIN
  RETURN 'ok';
END;
/  

Then the next step. Add code and compile. Fix any errors and continue. If you're a complete novice then don't write large chunks of code because it could be hard to figure out what is wrong. How are you creating these functions - are you using a proper tool like sqldeveloper ? If not... well you should. Those tools make developing pl/sql a lot easier.

Read documentation, look for examples. pl/sql has its own syntax, don't assume that you can just borrow the syntax javascript or java uses... that will cause numerous errors. In your code, for example:

-- 2 errors in following line. 
-- 1. The "==" is not valid oracle syntax
-- 2. What is this ? '08932010','08932030'... is that a list of arguments - how would the operator "==" handle this ? What are you expecting ?
IF (p_CODPRO == '08932010','08932030','08942020','08942010','08942310','08932210') THEN 
-- the code below will not compile. You cannot "just select" in pl/sql, you need to SELECT INTO a variable.
SELECT SYSDATE+3/72 FROM DUAL 

Some places you can start:

Other than that, you wrote your first code and asked questions about it - so you're definitely on the right track :)

Upvotes: 1

Related Questions