同じ列の2つのビューがあります。最初のビューの列の1つは「オンザフライ」で生成され、として設定されNULL
、他のビューの同じ列には値が。として保存されvarchar
ます。次のようなストアドプロシージャがあります。
ALTER PROCEDURE [dbo].[mi_GetLearners]
(@centrename nvarchar(200))
AS
SELECT [centrename]
,[Name]
,[Username] --generated on the fly as NULL
FROM [DB1].[dbo].[vw_Learners]
WHERE [centrename] = @centrename
UNION
SELECT [centrename]
,[Name]
,[Username] --values stored as varchar
FROM [Linked_Server].[DB2].[dbo].[vw_Learners]
WHERE [centrename] = @centrename
DB1はSQLServer2008上にありますR2DB2はSQLServer2005上にあり
ます
ストアドプロシージャを実行すると、次のエラーが発生します。
メッセージ245、レベル16、状態1、1行目varchar値'someusername'をデータ型intに変換するときに変換に失敗しました。
他の列がとして設定されているのに、なぜ値をintデータ型に変換しようとしているのNULL
ですか?代わりに、2番目の列をからストアドプロシージャに変更すると、正常にNULL
機能します... selectステートメントで生成された列と列' '
の結合がこのようなエラーをスローする理由については本当に困惑しています...何かアイデアはありますか?varchar
NULL
編集:私は解決策ではなく説明を探しています...
編集2:次のコードを実行します:
CREATE VIEW vw_myview
AS
SELECT NULL AS MyColumn
EXECUTE sp_help vw_myview
戻り値:
Type Column_name
int MyColumn