2011-05-25 33 views
1

什麼我與傳遞參數不正確地做在這個存儲過程?:問題的參數傳遞動態T-SQL

ALTER PROCEDURE [dbo].[Unload] 
    @branch_id INT, 
    @fl_close BIT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    IF object_ID('TempDb..##ttable','U') IS NOT NULL 
     DROP TABLE ##ttable; 

    DECLARE @ExecStr varchar(4000), 
      @paramlist varchar(4000); 
    SElECT @ExecStr = 'CREATE TABLE #ttables 
    (
     numid INT identity(1,1), 
     uso_id INT 
    )  

    INSERT INTO #ttables (uso_id) 
    SELECT u2.uso_id FROM Uso u2 WHERE u2.branch_id = @branch_id;' 

    SElECT @ExecStr = @ExecStr + 'SELECT identity(int,1,1) as id, c.client_code, 
      a.account_num, u.uso_id 
    INTO ##ttable 
    FROM accounts a INNER JOIN Clients c ON 
      c.id = a.client_id INNER JOIN Uso u ON c.uso_id = u.uso_id INNER JOIN 
      Magazin m ON a.account_id = m.accoun t_id INNER JOIN #ttables tt 
      ON u.uso_id = tt.uso_id 
    WHERE m.status_id IN (1,5) AND a.fl_close = @fl_close AND 
      u.branch_id = @branch_id'; 

    SElECT @ExecStr = @ExecStr + '; 
      SELECT id, 
       client_code, 
       abs_account_num, 
       account_new_num, 
       account_new_open_date, 
       account_close_date, 
       uso_id 
      FROM ##ttable; 
      DROP TABLE #ttables; 
      DROP TABLE ##ttable;' 

    SELECT @paramlist = N'@branch_id INT, @fl_close BIT'; 
    EXEC sp_executesql @ExecStr, @paramlist, @branch_id, @fl_close; 
+0

是否有錯誤消息? – 2011-05-25 06:49:25

+0

@Ocaso Protal:不,沒有。但參數值不通過。 – DmitryB 2011-05-25 06:53:07

+1

順便說一句:爲什麼你需要動態SQL在這裏?我瞎了嗎? – 2011-05-25 06:53:49

回答

3

參數值並通過細。

CREATE PROCEDURE [dbo].[Unload] 
    @branch_id INT, 
    @fl_close BIT 
AS 
BEGIN 
    SET NOCOUNT ON; 

    DECLARE @ExecStr NVARCHAR(4000), 
      @paramlist NVARCHAR(4000); 
    SELECT @ExecStr = 'select @branch_id, @fl_close' 

    SELECT @paramlist = N'@branch_id INT, @fl_close BIT'; 

    EXEC sp_executesql @ExecStr, @paramlist, @branch_id, @fl_close 

    END 

    GO 

    EXEC [dbo].[Unload] 20,1 

返回

----------- ----- 
20   1 
+0

謝謝,它真的有效,然後在另一個地方的錯誤( – DmitryB 2011-05-25 07:14:12