Sql 将参数化OPENQEURY的结果插入本地表的存储过程
这就是“乐趣”,我所说的“乐趣”是指头脑弯曲。我已设法:Sql 将参数化OPENQEURY的结果插入本地表的存储过程,sql,stored-procedures,linked-server,openquery,delta,Sql,Stored Procedures,Linked Server,Openquery,Delta,这就是“乐趣”,我所说的“乐趣”是指头脑弯曲。我已设法: 将参数馈送到OPENQUERY并获得如下结果: Declare @MyString varchar(max) , @TheDateAfter datetime set @TheDateAfter = DATEADD(d, 1, @TheDate) set @MyString = 'Select * from "ORACLEDB"."' + @TheTable + '"
- 将参数馈送到OPENQUERY并获得如下结果:
Declare @MyString varchar(max) , @TheDateAfter datetime set @TheDateAfter = DATEADD(d, 1, @TheDate) set @MyString = 'Select * from "ORACLEDB"."' + @TheTable + '" WHERE "EDITTIME" > to_date(''' + convert(varchar(30),@TheDate,120) + ''', ''YYYY-MM-DD HH24:MI:SS'') AND "EDITTIME" < to_date(''' + convert(varchar(30),@TheDateAfter,120) + ''', ''YYYY-MM-DD HH24:MI:SS'')' set @MyString = N'select * from openquery (LINKEDSERVER , ''' + REPLACE(@MyString, '''', '''''') + ''' )' Exec(@MyString)
Declare @MyString varchar(max)
, @TheDateAfter datetime
set @TheDateAfter = DATEADD(d, 1, @TheDate)
set @MyString = 'Insert Into [HO-RS1].[DELTAS].[dbo].[' + @TheTable + ']
Select * from "ORACLEDB"."' + @TheTable + '"
WHERE "EDITTIME" > to_date(''' + convert(varchar(30),@TheDate,120) + ''', ''YYYY-MM-DD HH24:MI:SS'')
AND "EDITTIME" < to_date(''' + convert(varchar(30),@TheDateAfter,120) + ''', ''YYYY-MM-DD HH24:MI:SS'')'
set @MyString = N'select * from openquery (LINKEDSERVER
, ''' + REPLACE(@MyString, '''', '''''') + '''
)'
Exec(@MyString)
。。。还有诸如此类的荒唐事
有人能告诉我如何将第一个查询的结果应用到“Insert into DELTAS.TABLE…”语句中吗
我知道我已经很接近了,但我已经在圈子里徘徊了一段时间了,我觉得我好像踩到了我的尾巴
谢谢 你就快到了。这适用于正常的存储过程。让我们看看它是否适用于使用MindBinding的SP
OPENQUERY
Insert Into DELTAS.TABLE
EXEC sp_get_Deltas @TheDate = '1/2/03', 'TheTable'
当然,EXEC中的列列表必须与目标表匹配
如果您有错误,请发布。如果语法正确,插入到…中的
应该适合您。打印出@MyString语句,将该语句和错误添加到您的帖子中。插入[HO-RS1]。[Delta]。[dbo]
将不起作用,因为该表在SQL Server上,而这是在Oracle Server上执行的。行得通!现在你提供了解决方案,我明白为什么它是有意义的。谢谢我相信它出错的原因是“嵌套”(?)隐藏了一个“Select*Select*”,这显然会导致问题。嗯<代码>从StoredProcess中选择*在任何情况下都无效。但是,如果它是表值函数,则它是有效的。
Insert Into DELTAS.TABLE
Select * From sp_get_Deltas @TheDate = '1/2/03', 'TheTable'
Insert Into DELTAS.TABLE
EXEC sp_get_Deltas @TheDate = '1/2/03', 'TheTable'