に実行された場合、次のように私はselect文を持っている:私は期待どおり異なる結果を取得するコードは、ストアドプロシージャ
SELECT TOP 1 TRY_CONVERT(UNIQUEIDENTIFIER,'6B75045F-22BF-4BD0-8170-32FA7DBF2A2xC')
FROM [sch_ImmAnn].[viw_mdlImmAnnEle_Formulae]
UIDは、意図的に間違っている、と私はこの文を実行すると、NULL値が返されます。しかし、次のように私は、ストアドプロシージャ内でこの文をエンコードする場合:
CREATE PROCEDURE [sch_Common].[usp_TestValid_UID]
@ExecUID UNIQUEIDENTIFIER
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT TOP 1 TRY_CONVERT(UNIQUEIDENTIFIER,@ExecUID)
FROM [sch_ImmAnn].[viw_mdlImmAnnEle_Formulae]
END
それは私が同じUIDとそれを実行するときにエラーを返し、パラメータとして渡さ:データ型を変換
エラーvarchar to uniqueidentifier。
どのように私はこの問題を回避することができますか?なぜそれが起こっているのですか?
'@ ExecUID'を一意の識別子として宣言し、一意の識別子に変換しようとします。あなたは '@ExecUID'をvarcharとして宣言したいと思いますか? – waka
'viw_mdlImmAnnEle_Formulae'は、自分自身で変換を試みるビューです。どのような効果も持たないように(すでに正しいタイプの)パラメータを変換しています(ただし、オプティマイザはビューの行を自由に評価するかどうかは自由です)。パラメーターを渡すのと同じです)。 –
ワカ、あなたは正しい - それが働いていない理由です。 @ExecUIDをvarcharに変更すると、それは問題ありませんでした。あなたが解決策を見たときにいつもとても明白です! Tks Joe。 – mediaeval