2017-07-21 26 views
0

在執行以下sql服務器時,我無法在代碼中傳遞@AKM參數,我怎麼能夠在簡單查詢中重現相同的操作。但是我能夠通過變量ID,因爲它是一個int類型,但@akm是在性格特徵選擇前1個字段並將其分配給數據庫名稱爲動態的局部變量

CREATE PROCEDURE [dbo].[sp_akm_test] 
    @AKM NVARCHAR(128), 
    @Anlsid Int 
    AS 
    DECLARE @Sql1 NVARCHAR(MAX); 
    DECLARE @type NVARCHAR(MAX); 
    BEGIN 
    SELECT TOP 1 @type= sample_type FROM ' + @RDM +'.dbo.analysis where ID= '@id 
     PRINT(@type) 
      IF (@type = 8017) 
      BEGIN 
      SET @Sql1 = N'select sample_n FROM'+ QUOTENAME(@AKM) +'..sample' 
      END 
      ELSE 
      Begin 
      SET @Sql1 = N'select sampleid FROM'+ QUOTENAME(@AKM) +'..sample' 
      END 
    EXECUTE sp_executesql @Sql1 
    END 
+1

你使用MySQL標記此的原因嗎? – DavidG

+0

@DavidG我正在使用MySQL – rsayam91

+1

不,你真的沒有,你正在使用SQL Server,如果你顯示的代碼實際上工作。如果您不確定您正在使用哪種數據庫技術,那麼您可能需要退後一步並做一些基本的學習/教程? – DavidG

回答

0

我猜你需要像這樣

declare @RDM sysname = ???? -- pass the db name, missing in your code 
declare @sql nvarchar(4000)= '',@type int 

set @sql = ' 
SELECT TOP 1 @type= sample_type FROM ' + quotename(@RDM) +'.dbo.rdm_analysis where ID=110' 

exec sp_executesql @sql,N'@type int output',@type = @type output 

SET @Sql1 = ' 
select case when @type = 8017 then sample_n else sampleid end 
FROM'+ QUOTENAME(@AKM) +'..sample' 

exec sp_executesql @sql1,N'@type int',@type 
+0

我收到以下錯誤「傳遞常量到存儲過程時不能使用OUTPUT選項」 – rsayam91

+0

@ rasiem18 - 現在檢查.. –

+0

thankyou我知道了。 – rsayam91

相關問題