java - 参数类型为 varbinary 的 Java 调用存储过程
问题描述
想查询是否有人知道如何在java中使用三个参数(前两个是varchar,第三个是varbinary)调用存储过程,我试图通过jpa的nativequery调用它
来自 SQL Server 的存储过程调用脚本
DECLARE @userSid as VARBINARY(100)
SET @test_id = SUSER_SID('test_account')
select @test_id;
EXEC dbo.testUser 'test','test',@test_id
下面是我尝试从 nativequery 执行存储过程的内容
@Query(value = "{call testUser(:name,:Application,:test_id)}",nativeQuery=true)
public Object callTestProcedure(@Param("name") String name,@Param("Application") String Application,@Param("test_id") byte[] test_id);
尝试如下调用它..
callTestProcedure("Truview","TruViewDataHub",Base64.decodeBase64("0x01050000000000051500000011D81D73D36F037181499C550F1A0000"))
但这不起作用,任何帮助将不胜感激..谢谢
更新..也尝试转换为十六进制如下
String hex=String.format("%040x", new BigInteger(1, "0x01050000000000051500000011D81D73D36F037181499C550F1A0000".getBytes("UTF-8")));
callTestProcedure("Truview","TruViewDataHub",hex);
这将导致另一个错误“不允许从数据类型 nvarchar 到 varbinary 的隐式转换。使用 CONVERT 函数运行此查询。”
解决方案
推荐阅读
- ios - 如何从模态返回到主视图控制器
- php - 页、行和列中的块数组
- html - 如何在 VSC 中自动生成的每个结束标记之前强制换行?
- react-native - Redux-saga:配置商店时出错
- python - Python 正则表达式 - 替换基于字符串的重复模式
- javascript - 在 Vue 中使用 D3/没有选择器?
- c++ - 使用赋值运算符复制 std::vector
- python - Docker compose 在 python 中可用,无需互联网访问
- asp.net-core - .Net Core 中间件在页面请求上多次命中
- apache-spark - 保持从 rdd 的位置 5 到 15