2017-10-24 31 views
0

パラメータを指定してストアプロシージャを実行しようとしているときにエラーが発生しました。クエリのアクティブな結果にフィールドがありませんlaravel

SQLSTATE [IMSSP]:クエリのアクティブな結果にフィールドが含まれていません。 (SQLます。exec [dboは] [CHECK_ACCESS_ALL_EMP] '10249'、 ''、 ''、 ''、 ''、 ''、 ''。)私は選択の結果を実行しよう

しかし、ときにエラー

EXEC [DBO] [CHECK_ACCESS_ALL_EMP] '10249'、 ''、 ''、 ''、 ''、 ''、 '' は、データベースと結果の後に実行ストア手順で 細かい仕事で​​ある:。

SELECT EMPCODE, ALLNAME, SEX, DIVISION, DEPARTMENT AS DEPT, POSTDESC, EMAIL,CONVERT(VARCHAR, DOB, 106) AS DOB, TRANNO, LEVELCODE FROM RPT_EMPLOYEE 
WHERE (TERMINATESTATUS='' OR (TERMINATESTATUS<>'' AND DATETERMINATE>=GETDATE())) 

Laravel機能

public function emplyeeList() 
    { 
     $employee = HREmpMast::orderBy('EMPCODE')->paginate(10); 
     $emp_code = Auth::user()->EMPCODE; 

     if($emp_code != null){ 
      $script = DB::select("exec [dbo].[CHECK_ACCESS_ALL_EMP] '".$emp_code."', '','','','','',''"); 
     } 

     return $script; 
    } 

ストア手順

USE [SOFITELSR_HRMS] 
    GO 
    /****** Object: StoredProcedure [dbo].[CHECK_ACCESS_ALL_EMP] Script Date: 10/24/2017 3:41:46 PM ******/ 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    ALTER PROCEDURE [dbo].[CHECK_ACCESS_ALL_EMP](@EMPCODE VARCHAR(10), 
     @FILTER_EMPCODE VARCHAR(10), 
     @FILTER_EMPNAME VARCHAR(200), 
     @FILTER_CATEGOYR VARCHAR(10), 
     @FILTER_DIVISION VARCHAR(10), 
     @FILTER_DEPT VARCHAR(10), 
     @FILTER_POSITION VARCHAR(10)  
     )AS 
    BEGIN 
     DECLARE @ACCESS_ALL_EMP INT=0,@LINEID INT,@LINEID_DELEGATE INT,@DELCODE VARCHAR(10), 
       @VIEW_BY_DEPT VARCHAR(500),@VIEW_BY_DEPT_DELEGATE VARCHAR(500),@MYSCRIPT VARCHAR(1000) 
     SET @DELCODE='' 
     SET @VIEW_BY_DEPT=''  
     SET @MYSCRIPT='SELECT EMPCODE, ALLNAME, SEX, DIVISION, DEPARTMENT AS DEPT, POSTDESC, EMAIL,CONVERT(VARCHAR, DOB, 106) AS DOB, TRANNO, LEVELCODE FROM RPT_EMPLOYEE 
     WHERE (TERMINATESTATUS='''' OR (TERMINATESTATUS<>'''' AND DATETERMINATE>=GETDATE()))' 
     SELECT @DELCODE=EMPCODE FROM HR_LEAVEDELEGATE WHERE [email protected] delegate information 
     SELECT @LINEID_DELEGATE=TRANNO FROM HR_EMPMAST WHERE [email protected] --Get line transaction no of delegate person 
     SELECT @LINEID=TRANNO FROM HR_EMPMAST WHERE [email protected] line transaction no 
     IF EXISTS(SELECT GDCODE FROM SYS_SETTING WHERE [email protected]) OR --General Manager 
      EXISTS(SELECT EMPCODE FROM HR_EMPMAST WHERE [email protected] AND BOARD=1) OR --Operation Manager 
      EXISTS(SELECT HDCODE FROM SYS_SETTING WHERE [email protected]) OR --Head of HR 
      EXISTS(SELECT HRCODE FROM SYS_SETTING WHERE [email protected]) OR --HR Assistant 
      EXISTS(SELECT GDCODE FROM SYS_SETTING WHERE [email protected]) OR --General Manager by delegate 
      EXISTS(SELECT EMPCODE FROM HR_EMPMAST WHERE [email protected] AND BOARD=1) OR --Operation Manager by delegate 
      EXISTS(SELECT HDCODE FROM SYS_SETTING WHERE [email protected]) OR --Head of HR by delegate 
      EXISTS(SELECT HRCODE FROM SYS_SETTING WHERE [email protected]) --HR Assistant by delegate 
     BEGIN 
      SET @ACCESS_ALL_EMP=1--THIS EMPLOYEE, ALLOW TO ACCESS ALL OF EMPLOYEES  
      PRINT 'VIEW ALL'  
     END 
     ELSE 
     BEGIN    
      PRINT 'VIEW BY ROLES' 
      --EMPLOYEE CONDITION   
      SET @MYSCRIPT+= ' AND (HODCODE=' + CAST(@LINEID AS VARCHAR(10)) 
      IF @LINEID_DELEGATE>0 
       SET @MYSCRIPT+= ' OR HODCODE=' + CAST(@LINEID_DELEGATE AS VARCHAR(10))  
      IF EXISTS(SELECT CODE FROM HR_DEPARTMENT WHERE [email protected] OR [email protected] OR [email protected])--IF HEAD OF DEPARTMENTS 
      BEGIN 
       EXEC GET_VIEW_BY_DEPT @EMPCODE,@VIEW_BY_DEPT OUTPUT 
       SET @MYSCRIPT+= ' OR DEPT IN (' + @VIEW_BY_DEPT + ')' 
      END  
      IF EXISTS(SELECT CODE FROM HR_DEPARTMENT WHERE (@DELCODE<>'' AND @DELCODE IS NOT NULL) AND ([email protected] OR [email protected] OR [email protected]))--IF HEAD OF DEPARTMENTS DELEGATE USER 
      BEGIN 
       EXEC GET_VIEW_BY_DEPT @EMPCODE,@VIEW_BY_DEPT_DELEGATE OUTPUT 
       SET @MYSCRIPT+= ' OR DEPT IN (' + @VIEW_BY_DEPT_DELEGATE + ')' 
      END 
      SET @MYSCRIPT+=')' 
     END 
     -----USER FILES 
     IF @FILTER_EMPCODE<>'' AND @FILTER_EMPCODE IS NOT NULL--employee code 
      SET @MYSCRIPT+= ' AND EMPCODE LIKE ''%' + @FILTER_EMPCODE + '%'''   
     IF @FILTER_EMPNAME<>'' AND @FILTER_EMPNAME IS NOT NULL--employee name 
      SET @MYSCRIPT+= ' AND ALLNAME LIKE ''%' + @FILTER_EMPCODE + '%''' 
     PRINT @MYSCRIPT 
    END 

答えて

0

あなたは、SQL関数ではなく、SELECTを呼び出しています。 の代わりに:

$script = DB::select("exec [dbo].[CHECK_ACCESS_ALL_EMP] '".$emp_code."', '','','','','',''"); 

試してみてください。

$script = DB::raw("exec [dbo].[CHECK_ACCESS_ALL_EMP] '".$emp_code."', '','','','','',''"); 
+0

しかし、私はこのような変数スクリプトから取得する結果:。 EXEC [dboは] [CHECK_ACCESS_ALL_EMP] '10249'、 ''、 '' 、 ''、 ''、 ''、 '' 予期した結果ではありません。 –

関連する問題