2011-06-02 33 views
1

我收到錯誤 允許「執行-984 ORA-00984:此處不允許列」 ,而我在我的表Registred_Customer使用Pro * CORA-00984列不在這裏

Registred_Customer插入值定義爲在Pro * C方法使用PRO * C方法

addCustomer(i, name,age, gender, address,contectNo); 

CREATE TABLE Registred_Customer (
    Cust_id NUMBER(6) PRIMARY KEY, 
    Name VARCHAR2(20) NOT NULL, 
    Age NUMBER, 
    Sex CHAR, 
    Addr VARCHAR2(50), 
    Contact NUMBER(10) 
); 

插入值I使用以下代碼插入

EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES 
(cust_id, cust_name, age, sex, addr, contact); 

這裏cust_name和addr是char *;性是char休息作爲int;

它同時採用可變的,但工作正常使用直接值 像EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES (10, 'Pankaj', 23, 'M', 'asdfs', 45875);

我試圖改變幾行,卻徒勞無功報告錯誤。

在此先感謝。

回答

1

如果我看到正確的,你試圖插入列,列?

「EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES(cust_id,cust_name,age,sex,addr,contact);」??

如果您發佈的程序完成,它會更有幫助。

Regards

1

正如先生提到的,您正在嘗試使用列作爲輸入值。當你提供它的實際值時,您是否有意使用PL/SQL變量或過程參數?在這種情況下,無論您調用的過程參數是什麼,都應該放入值部分。

也就是說,如果addCustomer看起來像

PROCEDURE addCustomer (pId NUMBER, pName VARCHAR2, pAge NUMBER, pGender CHAR, pAddress VARCHAR2, pContact NUMBER) 

然後你會做這樣的事情

INSERT INTO registered_customer (cust_id, name, age, sex, addr, contact) VALUES (pId, pName, pAge, pGender, pAddress, pContact); 

但如果你插入到所有列,你可以離開了列定義,只是提供值

+2

難道你沒有意識到INSERT語句是在Pro * C上下文中運行的? – Codo 2011-06-02 15:25:01

+0

@ Chris Cameron-Mills addcustomer不是一個程序。它是由另一個cpp程序調用的pro * c方法。所以這不會幫助。 – Nitesh 2011-06-03 02:39:48

+0

啊我的錯誤,是的,我沒有承認Pro * C,問題/解釋仍然是相同的,但是,您正在使用VALUES部分 – 2011-06-03 10:33:07

5

您的Pro * C代碼基本上缺少冒號(假設您的形式參數被稱爲cust_id,cust_name,age等):

EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES 
    (:cust_id, :cust_name, :age, :sex, :addr, :contact); 

那將是更穩健的明確指定的列名。否則,對錶模式的更改可能導致難以發現錯誤:

EXEC SQL INSERT INTO REGISTRED_CUSTOMER (Cust_Id, Name, Ag, Sex, Addr, Contact) 
    VALUES (:cust_id, :cust_name, :age, :sex, :addr, :contact); 
+2

+1中的列名,特別是對於明確列出列名的建議。 – DCookie 2011-06-02 16:00:26

+0

我已經嘗試了兩種解決方案。用冒號表示未定義的標識符,第二部分也沒有解決錯誤。 – Nitesh 2011-06-03 02:37:41

+0

請顯示addCustomer()函數的完整代碼。 – Codo 2011-06-03 06:36:13

0

我也在存儲過程中執行了插入操作時收到此錯誤消息。我在values子句中拼寫了一個參數名稱,oracle解釋器將拼寫錯誤的名稱看作列名稱,併發布了00984.