2014-04-25 37 views
5

Tôi đã tạo ra một thủ tục như:Làm thế nào để thực hiện một thủ tục được lưu trữ trực tiếp trong postgresql?

CREATE OR REPLACE FUNCTION insert_user_ax_register(
    user_name character varying(50), 
    password character varying(300), 
    role_id character varying(10), 
    created_dt date, 
    status boolean, 
    email character varying(50), 
    join_date character varying(30), 
    phone_no bigint, 
    client_address character varying(200), 
    full_name character varying(100), 
    financial_year character varying(10)) 
RETURNS void 
AS $BODY$ 
declare 
begin 
    INSERT INTO ax_register(user_name,password,role_id,created_dt,status,email,join_date,phone_no,client_address,full_name,financial_year) 
    VALUES (user_name,password,role_id,now(),true,email,join_date,phone_no,client_address,full_name,financial_year); 
end 
$BODY$ 
LANGUAGE plpgsql VOLATILE 

và cố gắng để thực hiện nó như thế này:

SELECT * from insert_user_ax_register('debasrita','debasrita','client001',now(),'t','[email protected]',now(),'ctc','debasrita','2014-15',9090909090); 

nhưng nó ném các lỗi sau:

LỖI: chức năng insert_user_ax_register (chưa biết, chưa biết , không xác định, dấu thời gian với múi giờ, không xác định, không xác định, dấu thời gian có múi giờ, không xác định, không xác định, không xác định, bigint) không tồn tại Trạng thái SQL: 42883 Gợi ý: Không có chức năng mat ches tên và kiểu đối số đã cho. Bạn có thể cần phải thêm phôi loại rõ ràng. Ký tự: 16

Hãy giúp tôi giải quyết vấn đề này. Tôi mới để pgsql và không thể tìm ra bất kỳ giải pháp từ google. Tôi đang sử dụng pgsql 9.1.3

Tôi có thể biết cách chính xác để đạt được mục tiêu của mình không?

+0

Nó vẫn không hoạt động @a_horse_with_no_name – Debs

Trả lời

7

Thông báo lỗi cho bạn biết những gì bạn cần phải tìm kiếm cho:

"No function matches the given name and argument types"

Như chức năng tên dường như đúng, nó chỉ có thể là các thông số bạn đang đi qua. Vì vậy, ghi lại giá trị nào được chuyển cho tham số:

 
'debasrita'     --> user_name character varying(50) 
'debasrita'     --> password character varying(300) 
'client001'     --> role_id character varying(10) 
created_dt date    --> now() 
status boolean,    --> 't' 
email varchar(50)   --> '[email protected]' 
join_date varchar(30)  --> now()  << first error: now() is not a character constant 
phone_no bigint    --> 'ctc'  << second error: 'ctc' is not a bigint 
client_address varchar(200) --> 'debasrita' 
full_name varchar(100)  --> '2014-15' 
financial_year varchar(10) --> 9090909090 << third error: 9090909090 is not a character literal 

Vì vậy, bạn cần phải điều chỉnh các loại thông số, ví dụ: xác định join_date là ngày, không phải là varchar hoặc điều chỉnh giá trị mà bạn chuyển cho mỗi thông số.

Và cuối cùng bạn cần phải gọi hàm như thế này:

SELECT insert_user_ax_register(...); 

hơn select * from ...

+0

Xin cảm ơn !! Bạn sửa lỗi của tôi :) Nhưng tôi phải nói rằng chọn * từ ... hoạt động là tốt. – Debs

0

Nếu bạn đang sử dụng pgAdmintool chỉ việc kích chuột phải vào chức năng hoặc Stored Proc dưới một lược đồ và chọn properties và sau đó paramaeters. Bây giờ chèn giá trị mà bạn wannna chèn.

Các vấn đề liên quan