2011-11-25 4 views
0

저장 프로 시저가 새로 도입되었습니다. 두 개의 다른 테이블에 레코드를 삽입하는 저장 프로 시저를 만들려고하는데 문제가 있습니다.삽입 2 개를 사용하여 저장 프로 시저를 만들려고합니다.

저는 C#에서 MySQL에 대한 .NET 커넥터로 코딩하고 있습니다.

두 테이블, prop_detailsprop_account이 있습니다. prop_details 테이블에 자동 증가 열 (id)이 있고 prop_account 테이블에 과 일치하는 외래 키 prop_id이 정의되어 있습니다. 의사 코드에 따라

저장 프로 시저가 어떻게해야 무슨 설명 :

여기
insert form elements into table prop_details 
insert relationship of prop_details.id into table prop_account 

내가 저장 프로 시저를 저장하려고 할 때

DROP PROCEDURE IF EXISTS `InsertPropertybyClientID`; 

CREATE DEFINER = `root`@`localhost` PROCEDURE `InsertPropertybyClientID`(IN 'in_account' int(11), IN `in_title` varchar(100), IN 'in_type' int(2), IN 'in_active' tinyint(1), IN 'in_created' datetime) 
BEGIN 
INSERT INTO prop_details 
    (prop_title, prop_type, prop_active) 
VALUES 
    (in_title, in_type, in_active, in_created); 

INSERT INTO prop_account 
    (prop_id, acnt_id) 
VALUES 
    (LAST_INSERT_ID(), in_account); 
END; 

을 만들려고 저장 프로 시저입니다 I 이 오류가 발생했습니다

1064 - SQL 구문에 오류가 있습니다. "in_account"int (11), IN 'in_title'varchar (100), IN 'in_type'int (2), IN 'in_ac'줄에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. ? 내가 잘못하고있는 중이 야 무슨 일

+5

매개 변수 이름 주위에 따옴표를 넣지 않고 사용해보십시오. IN IN_account int (11) IN 대신 'in_account'int (11) – Sparky

+0

감사합니다. Sparky, that worked .. – Rick

답변

2

사실 오류 세부 사항은 무엇이 잘못 표현 :

근처 " 'in_account'INT (11)의 'in_title'VARCHAR (100) , IN 'in_type'int (2), IN 'in_ac'1 행

식별자 인용 문자는 백틱는 (" '")입니다 : identifiers에 MySQL의 참조 문서에서 414,, 그것은한다고

ANSI_QUOTES SQL 모드 인 경우

가능하면 큰 따옴표 안에 식별자를 인용 할 수 있습니다.

이것은 ANSI_QUOTES SQL 모드를 활성화하지 않는 한 작은 따옴표 나 큰 따옴표를 사용하여 식별자를 나타내지 않아야 함을 의미합니다. 사용중인 단어가 reserved word이 아닌 경우 사용자는 역 따옴표 (`)를 사용할 수도 있고 역 따옴표를 생략 할 수도 있습니다.

관련 문제