【问题标题】:REST API SQL stored procedure conversion error (Implicit conversion from data type nvarchar to varbinary is not allowed)REST API SQL 存储过程转换错误(不允许从数据类型 nvarchar 到 varbinary 的隐式转换)
【发布时间】:2019-01-09 01:45:46
【问题描述】:

我正在使用 dreamfactory REST API 调用 SQL Server 存储过程。 SQL Server 数据库对存储过程的一些参数使用用户定义的数据类型。

这是我通过 Dreamfactory 的 API Docs 区域调用它的方式:

 {
 "params": [
      {
      "name": "Number",
      "param_type": "IN",
      "value": "123456"
      },
      {
      "name": "IdNumber",
      "param_type": "IN",
      "value": "0x0048F1F5A7DC5A2A431CBAD70270E59C5FA0"
     }
 ],
 "schema": {
 "_field_name_": ""
  },
 "wrapper": "",
 "returns": ""
  }

错误是:

不允许从数据类型 nvarchar 到 varbinary 的隐式转换

我认为问题出在第二个参数IdNumber 上,它是用户定义的数据类型。如果我删除该参数,我只会收到一个错误,即 IdNumber 是预期的并且丢失了。

数据类型是用户定义的类型,我不确定它为什么要尝试将其转换为varbinary。我真的不知道任何转换或存储值的方法,因为它使用的是 REST API。我认为我不能将任何东西转换为存储过程参数是否正确?

我知道这是一个非常具体的问题,但感谢您提供任何帮助。在这个项目上,我一直在与 dreamfactor 抗争,如果答案是朝另一个方向发展,我愿意接受。

【问题讨论】:

    标签: sql-server rest stored-procedures dreamfactory


    【解决方案1】:

    我相信它试图将其转换为 varbinary 的原因是:

    "value": "0x0048F1F5A7DC5A2A431CBAD70270E59C5FA0"
    

    我相信值中的前导 0x 正在触发它。通常,以 0x 开头的值被视为十六进制值。

    我不熟悉 MS SQL Server,但是,如果您不打算允许用户定义的数据类型为二进制,也许您可​​以过滤输入以不允许前导 0x。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      在与 Dreamfactory 技术支持合作后,这是 Dreamfactory 的一个问题,他们希望尽快解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多