我有两个相同列的视图.第一个视图中的一列是"动态"生成并设置为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
Run Code Online (Sandbox Code Playgroud)
DB1位于SQL Server 2008 R2上
DB2位于SQL Server 2005上
当我运行存储过程时,我收到以下错误:
当将varchar值'someusername'转换为数据类型int时,消息245,级别16,状态1,行1转换失败.
为什么尝试将值转换为int数据类型,因为另一列设置为NULL?如果我不是从改变第二列NULL到' '存储的过程正常工作......我真的很困惑,为什么一个联盟之间的varchar列,并NULL在SELECT语句生成列会抛出这样的错误...任何想法?
编辑:我正在寻找解释而不是解决方案......
编辑2:运行以下代码:
CREATE VIEW vw_myview
AS
SELECT NULL AS MyColumn
EXECUTE sp_help vw_myview
Run Code Online (Sandbox Code Playgroud)
返回:
Type Column_name
int …Run Code Online (Sandbox Code Playgroud) 我尝试通过传入 a 来使用 Airflow SFTPHookssh_conn_id,但出现错误:
No hostkey for host myhostname found.
Run Code Online (Sandbox Code Playgroud)
然而,使用SFTPOperator进行同样的操作ssh_conn_id却可以正常工作。我该如何解决这个错误?