我尝试使用来自不同数据库(名为Database1和Database2的hier)的public function handle($request, \Closure $next)
{
$response = $next($request);
if (last(explode('\\',get_class($response))) != 'RedirectResponse') {
$response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
}
return $response;
}
并执行variables
语句。
sp_executesql
在我的 USE Database1
DECLARE @testVariable BIT = 1
USE Database2
DECLARE @Param1 t_ID
DECLARE @Param2 t_ID
DECLARE @Param3 VARCHAR(100) = '01.01.2010'
DECLARE @Param4 VARCHAR(100) = '31.12.2015'
DECLARE @Param5 VARCHAR(100) = '1'
DECLARE @Param6 VARCHAR(100) = 'EUR'
DECLARE @ParamDefinition NVARCHAR(1000) = ''
DECLARE @SQLString NVARCHAR(1000) = ''
DECLARE @SQLObject VARCHAR(100) = ''
INSERT INTO @Param1 VALUES (1) ,(345), (123)
INSERT INTO @Param2 VALUES (106)
SET @SQLObject = 'Database2.dbo.Testfunction2'
SET @SQLString = 'SELECT * FROM ' + @SQLObject + '(@Param1, @Param2, @Param3, @Param4, @Param5, @Param6)'
SET @ParamDefinition = '@Param1 t_ID READONLY, @Param2 t_ID READONLY, @Param3 VARCHAR(100), @Param4 VARCHAR(100), @Param5 VARCHAR(100), @Param6 VARCHAR(100)'
IF @testVariable = 1
BEGIN
EXECUTE sp_executesql @SQLString, @ParamDefinition, @Param1, @Param2, @Param3, @Param4, @Param5, @Param6
END
声明中,我还有两个 变量 ,其中包含用户定义的表格类型sp_executesql
和@Param1 t_ID
。此类型在两个数据库中都创建。
如果我评论@Param2 t_ID
并运行上面的代码,以便我只在一个数据库(Database2)中保留整个过程,则没有错误,
但是当我尝试使用两个数据库运行相同的过程时:--USE Database1
和USE Database1
,我收到了兼容性错误:
USE Database2
Msg 206, Level 16, State 2, Procedure PROC_Test, Line 0
我做错了什么?有没有解决问题的方法?