pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SQL函數(shù)從多列返回值

SQL Function to return value from multiple columns(SQL函數(shù)從多列返回值)
本文介紹了SQL函數(shù)從多列返回值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

限時送ChatGPT賬號..

我一直在開發(fā)一些存儲過程,并且我一直在重復(fù)一部分代碼,這些代碼根據(jù)其他幾列派生出一列.因此,我沒有將這段代碼從一個存儲過程復(fù)制到另一個存儲過程,而是考慮使用一個函數(shù)來獲取輸入列并生成輸出列.

I've been developing a few stored procedure and I have been repeating a portion of codes that derives a column based on a few other columns. So instead of copy this piece of code from one stored procedure to another, I'm thinking of having a function that takes the input columns and produces the output columns.

基本上,函數(shù)如下:

SELECT columnA, columnB, columnC, myFunction(columnA, columnB) as columnD FROM myTable

如我們所見,此函數(shù)將 A 列和 B 列作為輸入,然后返回 D 列.

As we can see, this function will take column A and column B as inputs, then return column D.

但是,根據(jù)一些研究,使用這樣的 UDF(用戶定義)函數(shù)時似乎存在一些性能問題.真的嗎?處理這種情況的最佳方法是什么?

However, based on some research, it seems to have some performance issues when using UDF (user-defined) function like this. Is that true? What's the best way to handle this situation?

謝謝各位.

推薦答案

標(biāo)量函數(shù)和多語句表值用戶定義函數(shù)會導(dǎo)致性能問題,因為它們隱式地將基于集合的操作轉(zhuǎn)換為基于游標(biāo)的操作.

Scalar functions and multi statement table valued user defined functions can cause performance issues, because they implicitly turn your set based operation into a cursor based operation.

然而,內(nèi)聯(lián)表值的用戶定義函數(shù)不會遇到這個問題.他們很快.

However, inline table valued user defined functions do not suffer from this problem. They're fast.

區(qū)別在于您如何聲明函數(shù),以及它們內(nèi)部的代碼是什么樣的.多語句函數(shù)執(zhí)行它在罐頭上所說的 - 它允許您有多個語句.像這樣:

The difference is how you declare the fuction, and what the code looks like inside them. A multi statement function does what it says on the tin - it lets you have multiple statements. Like this:

create function slow() returns @t table(j int, k int) as 
begin
    declare @j int = 1; -- statement 1
    declare @k int = 2; -- statement 2
    insert @t values (@j, @k); -- statement 3
    return; -- statement 4
end

內(nèi)聯(lián)表值函數(shù)不會返回填充在函數(shù)內(nèi)部的命名表.它返回一個選擇語句:

An inline table valued function does not return a named table which is populated inside the function. It returns a select statement:

create function quick() returns table as
return
(
    select j = 1, k = 2
);

內(nèi)聯(lián)表值函數(shù)可以內(nèi)聯(lián)";進(jìn)入外部 select 語句,與視圖的方式大致相同.當(dāng)然,區(qū)別在于 UDF 可以接受參數(shù),而視圖不能.

The inline table valued function can be "inlined" into the outer select statement, in much the same way as a view. The difference, of course, being that the UDF can take parameters, whereas a view cannot.

您還必須以不同的方式使用它們.使用交叉應(yīng)用:

You also have to use them differently. Use cross apply:

select       t.columnA, t.columnB, u.j, u.k
from         MyTable t
cross apply  quick(t.columnA, t.columnB) u

如果不清楚 - 是的,在您的情況下,您只需要一個標(biāo)量"返回值,但這只是一個表值函數(shù),它返回單列和單行.因此,與其編寫標(biāo)量函數(shù),不如編寫一個執(zhí)行相同工作的內(nèi)聯(lián)表值函數(shù),然后交叉應(yīng)用它.

In case it's not clear - yes, in your case you only want a "scalar" value back, but that's just a table valued function which returns a single column and a single row. So instead of writing a scalar function, write an inline table valued function that does the same job, and cross apply it.

這篇關(guān)于SQL函數(shù)從多列返回值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

What SQL Server Datatype Should I Use To Store A Byte[](我應(yīng)該使用什么 SQL Server 數(shù)據(jù)類型來存儲字節(jié) [])
Interpreting type codes in sys.objects in SQL Server(解釋 SQL Server 中 sys.objects 中的類型代碼)
Typeorm Does not return all data(Typeorm 不返回所有數(shù)據(jù))
Typeorm .loadRelationCountAndMap returns zeros(Typeorm .loadRelationCountAndMap 返回零)
How to convert #39;2016-07-01 01:12:22 PM#39; to #39;2016-07-01 13:12:22#39; hour format?(如何將“2016-07-01 01:12:22 PM轉(zhuǎn)換為“2016-07-01 13:12:22小時格式?)
MS SQL: Should ISDATE() Return quot;1quot; when Cannot Cast as Date?(MS SQL:ISDATE() 是否應(yīng)該返回“1?什么時候不能投射為日期?)
主站蜘蛛池模板: 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 卫生型双针压力表-高温防腐差压表-安徽康泰电气有限公司 | 壹作文_中小学生优秀满分作文大全 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 亮点云建站-网站建设制作平台| 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 苏州伊诺尔拆除公司_专业酒店厂房拆除_商场学校拆除_办公楼房屋拆除_家工装拆除拆旧 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 24位ADC|8位MCU-芯易德科技有限公司 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | LINK FASHION 童装·青少年装展| 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 100_150_200_250_300_350_400公斤压力空气压缩机-舰艇航天配套厂家 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 浇注料-高铝砖耐火砖-郑州凯瑞得窑炉耐火材料有限公司 |