【问题标题】:CAST/CONVERT Datatype to INT SQL Server query将 CAST/CONVERT 数据类型转换为 INT SQL Server 查询
【发布时间】:2016-12-27 01:27:17
【问题描述】:

使用 SQL Server 2014,我有存储过程和一个 SSRS 报告,其中 dataSet 连接到它。数据集查询如下:

SELECT * 
INTO #Test10 
FROM OPENQUERY([SERVER1], 'exec [test_1].shp.Report_test1 @FIELDID = [@FIELDID]')

SELECT * FROM #Test10

所以当用户在参数@FIELDID中输入数字时,他会得到一个错误

将数据类型 nvachar 转换为 int。

我需要将此查询中的数据@FIELDID 转换为INT。希望获得正确语法的帮助。

【问题讨论】:

  • 为什么不在 SSRS 参数中将其作为 int 来代替?
  • 在报告参数属性中将数据类型更改为整数没有帮助,与我上面写的错误相同

标签: sql sql-server reporting-services sql-server-2014


【解决方案1】:

为了构建场景,我在模式 .dbo 中创建了一个表示例,并在模式 .shp 中创建了过程 Report_test1。

CREATE TABLE dbo.[sample]
(ID INT,
 Name VARCHAR(50))
 GO

 INSERT INTO  dbo.sample
 VALUES (1,'A'), (2,'B'), (2,'C'), (1,'D'), (3,'A'), (1,'F')
 GO

CREATE PROCEDURE shp.Report_test1
@FIELDID int
AS 
BEGIN 

  SELECT *
  FROM [Sample]
  WHERE id=@FIELDID

END
GO

然后我运行了下面的 openquery 命令,它对我有用..

DECLARE @Query NVARCHAR(2000)
DECLARE @FIELDID INT=1

SET @Query = N'SELECT * INTO dbo.Test1 FROM OPENQUERY([LAP], ''exec  [MyLab].shp.Report_test1 @FIELDID = '+Cast(@FIELDID As Varchar(50))+ '  '')'
EXEC (@Query)

SELECT * FROM dbo.Test1

试试这个,然后告诉我。

【讨论】:

  • mssql 说 - 找不到存储过程''。
  • 你提到你的服务器名称了吗?
  • OPENQUERY([Server] - 如果你在谈论这部分查询,是的,我做到了
  • 我尝试为我创建您的场景及其作品。只需检查更新的脚本并让我知道。确保过程 sxists 在模式 .shp 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多