2017-07-21 7 views
0

以下のSQL Serverを実行すると、簡単なクエリでこれを行うことができたコードに@AKMパラメータを渡すことができません。しかし、私はそれがint型であるとしてIDの変数を渡すことができていますが、charecterトップ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

に@akmである私は、あなたがこの

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

よかったそんなに私はそれを得た。 – rsayam91

関連する問題