Chrouos 2022-08-09 14:10
浏览 11
已结题

在MSSQL Select中執行EXEC回傳Value

在MSSQL Select中執行EXEC回傳Value

在這裡面最大的問題是,我的變數就是欄位名稱,例如 sTable中有一個欄位為Item,並且只要一筆
參數就會是 @table nvarchar(200), @item nvarchar(200)
我的SQL語句為:

Select TOP(1) Item From sTable

因此在正常的EXEC下就會這樣設定

EXEC ('Select TOP(1) Item From sTable')

但我需要的是

SELECT * FROM EXEC ('Select TOP(1) Item From sTable')
錯誤訊息為 Incorrect syntax near the keyword 'EXEC'.

這個部份不論是回傳數值還是回傳表都沒有關係
我想了兩個方式,第一個是Store Procedure,另一個是Func,
但是如果是Store Procedure話一樣需要EXEC執行,而Func是在裡面不可以執行EXEC

CREATE FUNCTION [fnGetWp] (@table nvarchar(200), @item nvarchar(200))
RETURNS nvarchar(1000)
AS
BEGIN  

    DECLARE @statement nvarchar(max)
    SET @statement = 'SELECT TOP(1) ' + @item + ' AS Item FROM ' + @table 

     DECLARE @value nvarchar(1000)
       exec sp_executesql @statement, N'@value NUMERIC out', @value OUT

RETURN @value
END
錯誤訊息 Only functions and some extended stored procedures can be executed from within a function.
-- Store Procedure
SELECT * FROM EXEC xp_query @table = 'sTable', @item = 'Item' 
-- error message: Incorrect syntax near the keyword 'EXEC'.

-- function
SELECT [dbo].fnGetWp('sTable', 'Item')  
-- error message: Only functions and some extended stored procedures can be executed from within a function.
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月17日
    • 修改了问题 8月9日
    • 修改了问题 8月9日
    • 创建了问题 8月9日

    悬赏问题

    • ¥15 悬赏Python-playwright部署在centos7上
    • ¥15 psoc creator软件有没有人能远程安装啊
    • ¥15 快速扫描算法求解Eikonal方程咨询
    • ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
    • ¥30 关于R语言运行分区生存模型中的问题!
    • ¥15 校内二手商品转让网站
    • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
    • ¥100 求Web版SPC控制图程序包调式
    • ¥20 指导如何跑通以下两个Github代码
    • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀