1

機能や設定DECLAREに若干の不具合があります。私がこれまでに持っているものは次のとおりです。CALLIF

CREATE PROCEDURE number_of_projects(project_name VARCHAR)
BEGIN
    DECLARE variable INT;
    SET variable = 4;
    SELECT variable;

    SELECT count(project_id) FROM atm_projects WHERE project_name = variable;
END

IF number_of_projects("PROJECT NAME") = 0
    THEN
    INSERT INTO atm_projects(project_id,project_name,added_from_mti)
    VALUES (project_id,'PROJECT NAME',1)
ENDIF

project_name主な目標は、重複していないテーブルに行を挿入することです。

キーを変更project_nameすることはできUNIQUEますが、コードの何が問題なのか教えてください。これを修正するにはどうすればよいですか?

PROCEDURECALL procedure、がどのように機能するかを学ぶ必要がありますIF

4

3 に答える 3

1

試す:

CREATE PROCEDURE number_of_projects(project_name VARCHAR(255))
BEGIN
    DECLARE var_project_no INT;
    SET var_project_no = 0;
    SELECT var_project_no;

    SELECT count(project_id) INTO var_project_no FROM atm_projects WHERE var_project_name = 4;


    IF var_project_no = 0
    THEN
        INSERT INTO atm_projects(project_id,project_name,added_from_mti)
        VALUES (project_id,'PROJECT NAME',1)
    END IF;
END;
于 2012-07-26T11:03:36.560 に答える
0

長さを指定せずにproject_nameをvarcharに宣言しました。varchar(100)に変更します

于 2012-07-26T10:57:31.897 に答える
0
CREATE PROCEDURE number_of_projects(project_name VARCHAR(255))
BEGIN

 if NOT  exists(SELECT Top 1 1  FROM atm_projects WHERE var_project_name = 4)
 BEGIN 
   INSERT INTO atm_projects(project_id,project_name,added_from_mti)
   Select project_id,project_name ,1
 END
END;
于 2012-07-26T11:09:40.783 に答える