【问题标题】:How to get the output value from stored procedure from another stored procedure in a tabular format如何以表格格式从另一个存储过程中获取存储过程的输出值
【发布时间】:2023-03-04 04:14:01
【问题描述】:

我有一个包含以下数据的表格,其中包含 itemIDImagepath(s)

tableImagePath

ItemID     frontimage                          backimage
---------  ----------------------------------  ---------------------------------
772740509  2011\11\24\1\8014681_5_1_FRONT.tif  2011\11\24\1\8014681_5_1_BACK.tif
772740508  2011\11\24\1\8014680_4_1_FRONT.tif  2011\11\24\1\8014680_4_1_BACK.tif
772740507  2011\11\24\1\8014679_3_1_FRONT.tif  2011\11\24\1\8014679_3_1_BACK.tif
772740506  2011\11\24\1\8014678_2_1_FRONT.tif  2011\11\24\1\8014678_2_1_BACK.tif
772740505  2011\11\24\1\8014677_1_1_FRONT.tif  2011\11\24\1\8014677_1_1_BACK.tif
772740504  2011\11\24\1\8014676_5_1_FRONT.tif  2011\11\24\1\8014676_5_1_BACK.tif
772740503  2011\11\24\1\8014675_4_1_FRONT.tif  2011\11\24\1\8014675_4_1_BACK.tif
772740502  2011\11\24\1\8014674_3_1_FRONT.tif  2011\11\24\1\8014674_3_1_BACK.tif
772740501  2011\11\24\1\8014673_2_1_FRONT.tif  2011\11\24\1\8014673_2_1_BACK.tif
772740500  2011\11\24\1\8014672_1_1_FRONT.tif  2011\11\24\1\8014672_1_1_BACK.tif

我有一个存储过程,它以 base64 编码生成图像的输出(来自上面的图像路径)。

declare @base64image as varchar(max)
exec dbo.prIMGCLR_ReadImage_Base64 '2011\11\24\1\8014681_5_1_FRONT.tif', @base64image out 
select @base64image

返回如下所示的输出:

SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA....

注意:dbo.prIMGCLR_ReadImage_Base64 存储过程实际上是被锁定的,我无法打开源代码查看里面的内容。 所以我只能使用这个过程,我没有其他函数可以返回 base64 编码的值。

现在,如果我使用相同的过程来获取 FrontImageBackImage 的 base64 编码值,输出应该如下所示...

tableImage_Base64Encoded

772740509   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740508   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740507   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740506   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740505   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740504   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740503   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740502   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740501   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...
772740500   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...   SUkqAAgAAAATAP4ABAABAAAAKwIAAAIBAwABAAAAAQA+gAAABwBAwABAAAAAQAAACIAAAAAQAAAMgAAAABAAAA...

请有人帮助我以良好的性能方式完成这项工作。而不是遍历每一个来产生结果。 有时这可能会超过 1000 行项目。因此,以表格形式生成输出可能需要很长时间。 感谢您查看问题并为我提供解决方案。

【问题讨论】:

  • 您是否有机会创建一个接受单个输入的函数,将其输入存储过程并执行,然后返回 base64?可能对性能影响不大,但更容易调用

标签: sql-server sql-server-2005 sql-server-2008 tsql


【解决方案1】:

如果您无法将生成 base64 字符串的 proc 转换为标量值函数,恐怕您无能为力,只能遍历行并一次生成一个值

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2017-02-14
    • 2017-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多