0

重複の可能性:
整数をキャストし、TSQL で varchar に連結する

それぞれが型を返す 2 つのスカラー関数を作成しましたuniqueidentifer。これらのプロシージャを execute ステートメントで呼び出す必要がありますが、構文が間違っているようです。

Exec spModifyProductPropertyValue 
     @PAVID, 
     fnGetPropertyIDbyLabel(@Label7, @USPID, 0, 1), 
     @ProductID, 
     @Value7, 
     fnGetPINID(@7PIN), 
     0, 
     @counter out

私が気づいたのは、関数を個別に呼び出してから、上記の呼び出しで前の呼び出しからの出力を使用することです。

Declare
      @PropertyID as uniqueidentifier = null

Select @PropertyID = fnGetPropertyIDbyLabel(@Label7, @USPID, 0, 1)

Exec spModifyProductPropertyValue 
         @PAVID, 
         @PropertyID, 
         @ProductID, 
         @Value7, 
         fnGetPINID(@7PIN), 
         0, 
         @counter out

コンパイラはあまり文句を言いません。このアプローチの問題は、これらの一時変数 (ほぼ 50) を非常に多く作成してしまうことであり、回避したいものです。これを正しくするための助けをいただければ幸いです。

4

2 に答える 2

0

の構文UDFは次のとおりです。

expression... function_name(value_1, value_2, ... value_n)...

したがって、式ではなく、値のみを渡すことができます。

関数の使用は式であるため、別の関数の呼び出し内

     Exec spModifyProductPropertyValue 
     @PAVID, 
     dbo.fnGetPropertyIDbyLabel(@Label7, @USPID, 0, 1) as GetPropertyID,  --Expression
     (..)

不可能です。

はい、変数を作成する必要があります。しかし、すべてが int の場合は、関数を使用するたびに 1 つ作成して使用することができます。または、関数を変更して、2 つの関数が行うことを 1 つのみで行うようにします。

于 2012-09-21T17:44:31.823 に答える
-1

所有者のプレフィックスが必要です。

Exec spModifyProductPropertyValue 
     @PAVID, 
     dbo.fnGetPropertyIDbyLabel(@Label7, @USPID, 0, 1) as GetPropertyID, 
     @ProductID, 
     @Value7, 
     dbo.fnGetPINID(@7PIN) as GetPINID, 
     0, 
     @counter out

Awnser はここにありました: Select 内の SQL ユーザー定義関数

于 2012-09-21T16:45:55.173 に答える