2017-12-14 3 views
0

저는 작업중인 저장 프로 시저의 결과를 얻는 방법에 대한 방법을 찾고있었습니다.변수에 저장 프로 시저 결과 저장

그래서이 SP가 호출되면 일련 번호가 자동 증가 숫자로 반환됩니다. ex. 0000002743

나는 SP를 작성한 아니다 나는 SQL Server의 초보자 해요하지만 난에 modify'it '하려고 할 때 적어도 그것이 만들어진 어떻게보고, 나는이 있습니다

ALTER PROCEDURE [dbo].[New_BatchCode] AS 
DECLARE @x NUMERIC 
UPDATE SysVars SET @x = BatchCode = BatchCode + 1 
SELECT BatchCode = REPLACE(STR(@x,10),' ','0') 

SQL Server에서 나는 EXEC [dbo].[New_BatchCode] 만 실행하면 결과가 표시됩니다. 하지만 PHP에서는 제대로 작동하지 않습니다. 나는 다음과 같은 시도 :

1

$conn = $this->delphi_connect(); 
    $batch_code_query = "EXEC [dbo].[New_BatchCode];"; 
    $stmt3 = sqlsrv_query($conn,$batch_code_query); 
    if($stmt3 === false) 
    { 
     echo "Error in executing statement 3.\n"; 
     die(print_r(sqlsrv_errors(), true)); 
    } 
    if ($stmt3) { 
     while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) { 
      $ret[] = $row; 
     } 
    } 
    sqlsrv_free_stmt($stmt3); 
    sqlsrv_close($conn); 
    print_r($ret); 
    die(); 

2

$conn = $this->delphi_connect(); 
    $batch_code_query = "{call [dbo].[New_BatchCode]}"; 
    $stmt3 = sqlsrv_query($conn,$batch_code_query); 
    if($stmt3 === false) 
    { 
     echo "Error in executing statement 3.\n"; 
     die(print_r(sqlsrv_errors(), true)); 
    } 
    if ($stmt3) { 
     while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) { 
      $ret[] = $row; 
     } 
    } 
    sqlsrv_free_stmt($stmt3); 
    sqlsrv_close($conn); 
    print_r($ret); 
    die(); 

내 SQL 서버를 enter image description here

내 목표는 어떻게 든 결과를 저장하는 것입니다 이자형 SP를 xecuted하고 다른 쿼리에 삽입하십시오. $batch_code = [result]처럼.

나는 이제 무엇을해야할지 잘 모르겠다. 도와 주셔서 감사합니다. 감사!

+0

결과는? 테이블을 업데이트하면 모든 행이 업데이트되므로'INSERTED' 테이블을 검사하고 연산이 INSERT 또는 UPDATE인지 검색해야하며 값은 테이블 하나에 여러 값이 있으므로 테이블에 저장됩니다 . – Sami

+0

안녕하세요 @Sam! 'BatchCode'라는 하나의 컬럼 만 리턴합니다. 나는 그 가치를 얻을 필요가있다. 나는 위의 이미지를 올려 놓을 것이다. –

+0

'BatchCode' 열의 어느 행이 있습니까? 'WHERE'가 없으므로 모든 값을 의미하는 모든 행을 업데이트합니다. – Sami

답변

1

당신은 업데이트를 테이블에 TRIGGER을 만들어이 문제를 해결 할 수 있습니다, 당신은 #Temporal 테이블을 사용하거나 (필요에 따라) 당신이 INSERTED 테이블에서 삽입 된 값을 저장하고 당신이 필요로 무엇이든 할 수있는 테이블을 생성 그들과 관련이 있습니다.

+0

나는 당신의 제안을 위해 노력할 것입니다. 나는 아직 초보자이기 때문에 무엇을해야할지 전혀 모른다. 나는 이것이 (나의 지식 수준에서) 복잡 할 것이라고 결코 생각하지 못했다. –