2014-07-25 2 views
0

스토어 프로 시저를 실행하는 PHP 스크립트가 있습니다. 여태까지는 그런대로 잘됐다. 나는 PHP와 SP를 호출 할 경우PHP 스토어 프로 시저의 Mssql 다중 쿼리

EXEC ('Delete From [DB].dbo.[Table]') 
EXEC ('INSERT INTO [DB].dbo.[Table] ([Col])VALUES(1)') 

, 그것은 단지 테이블의 내용을 삭제하고 첫 번째 행을 삽입하지 않습니다 지금은 저장 프로 시저 내에서 두 개의 쿼리를 실행 매장 절차가 있습니다.

$stmt = sqlsrv_query($connection, "EXEC my_sp"); 
... 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
... 
} 

반환 순간에 나에게 중요하지 않습니다 : 나는 다음과 같이 PHP의 SP를 호출 (첫 번째 Exec에서 실행됩니다 것처럼 보였다). 왜 첫 번째 쿼리 만 실행되는지 궁금합니다. 데이터베이스에서 SP를 직접 호출하면 쿼리가 예상대로 실행됩니다. 오류 메시지 또는 이와 유사한 오류 메시지가 없습니다. 아무도 내가 "execs"하나의 PHP 호출로 SP를 실행할 수있는 방법을 알고 있습니까?

도움에 감사드립니다! V

답변

0

나는 SP에서 EXEC ('[DB] .dbo. [Table]'에서 삭제)를 작성할 필요가 없다고 생각합니다. Ingnore EXEC(). [DB] .dbo. [Table]에서 삭제하는 것과 같이 작성하십시오.

+0

이봐, 감사합니다.이 경우에는 가능할 수도 있습니다. 나는 exec를 사용하여 테이블과 열을 매개 변수로 정의합니다. 두 개의 EXEC가 필요한 경우가 있습니다. EXEC는 query-string-length의 제한을 가지고 있기 때문에 하나 이상이 필요합니다. 하나의 PHP 호출로 저장 프로 시저에서 두 개의 EXEC를 호출 할 수 있습니까? –

+0

변수로 테이블 이름을 전달하려는 경우에도 EXEC가 필요 없다고 생각합니다. 직접 쿼리를 작성하십시오. –

+0

어떻게 작동 할 수 없어 ... 나는 이런 식으로 저장 프로 시저가 : CREATE PROCEDURE [bla] @ 테이블 이름 nvarchar (50) AS DELETE * FROM [@ 테이블 이름] 이것은 delete-query를 사용하여 변수를 concatenate하고 EXEC 쿼리를 실행하면 ... EXEC에서 실행할 수있는이 문자열은 limitted입니다. 그래서 EXEC를 여러 개 사용하지만 설명 된 문제가 있습니다. –