stored procedure 밖에 없는듯 한데...
$stmt = $db->prepare('SELECT * FROM table1 WHERE seq = :seq');
$fields[':seq'] = 1;
$stmt->execute($fields);
이걸 그대로 stored procedure 로 표현할 수 있을까요?
그리고 접속한 세션 내에서만 유효하도록 temporary 속성으로도 할 수 있을까요?
감사합니다.
질문을 좀 바꿔야겠군요.-_-;
필드명을 알아와서 적용하는 등의 삽질이 필요하고 php.net document 페이지에 언급이 좀 있는 것 같네요.
이런식이면 temporary 속성이면 안되겠고...
자동으로 마구마구 만들게 되면 문제 생기거나 할 일은 없겠죠?
2번째 질문은 무슨말인지 저는 이해 불가능하네요. 좀 더 자세하게 예를 들어 설명하시면 질문이해에 도움이 될 거 같습니다. 1번째 질문에 대한 답변 --------------------- prepared의 목적은 동일 패턴의 쿼리를 자주 사용하는 환경에서 미리 데이터베이스에 최적의 쿼리플랜을 만들어 놓고 변수값만 바꾸어서 다음부터는 쿼리플랜 생성 없이 바로바로 처리하기 위해 하는 것입니다. 그런데 stored procedure도 미리 실행계획을 만들어 놓고 변수값만 바꿔서 처리하는 방식입니다. 즉 프로그래밍 언어세 prepare 한 후 변수값만 바꿔 execute 하는것과 stored procedure를 만들어서 변수 값만 바꿔서 실행하는것은 동일한 매커니즘입니다. 결론 ---- stored procedure 를 만들고 변수값만 바꿔서 실행하세요.. 기능 성능 똑같음. temporary속성 얘기는 제가 질문을 이해 못했습니다
답변 감사합니다.
temporary 라고 표현한 것은,
stored procedure 는 prepared query 와는 다르게,
생성하면 계속 남아있다는 것입니다.
각종 필드속성을 명시하지 않고 프로그램으로 생성시키려면,
이것저것 값을 가져와서 만들어야 하기 때문에 매번 쓰고 지우는건 안좋겠고,
그냥 놔두자니 무분별하게 많이 생성되는것 아닌가 하는거죠.
성능상 제약이 생긴다거나, 사용상의 불편함이 발생한다거나 말이죠.
varbinary 가 안되는 거였는데,
테스트를 너무 한번에 다 하려다가 prepare() 자체가 안되는 줄 알았네요-_-;;;
prepare() 되네요;;