1. 程式人生 > >sqlserver中編寫自定義函式中的返回值問題

sqlserver中編寫自定義函式中的返回值問題

寫了一個獲取符號間隔字串的函式,原先程式碼如下

CREATE FUNCTION funGetSubStr
(
 -- Add the parameters for the function here

 @StrParams nvarchar(4000),
 @char char(1)=N'1'
)
RETURNS nvarchar(4000)
AS
BEGIN
 declare  [email protected]  varchar(300),
 @id  varchar(3000),
 @m  int,
 @n  int 
 --set  @str='a,b,c,d,e' 
 --set  @m=CHARINDEX(',',@str) 
 --set  @n=1 
 --WHILE  @m>0 
 --BEGIN 
 --    set  @id=substring(@str,@n,@

[email protected]
 --    print  @id 
 --    set  @[email protected]+1 
 --    set  @m=CHARINDEX(',',@str,@n) 
 --END
 set @m=charindex(@char,@strparams)
 set @n=1
 if @m>0
 begin
  set @id=substring(@strparams,@m,@[email protected])

   return @id

 end
 else
 begin
return null

 end
END
GO

sqlserver提示,函式最後一句必須是return語句,後改為如下

-- ================================================
-- Template generated from Template Explorer using:
-- Create Scalar Function (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE FUNCTION funGetSubStr
(
 -- Add the parameters for the function here

 @StrParams nvarchar(4000),
 @char char(1)=N'1'
)
RETURNS nvarchar(4000)
AS
BEGIN
 declare  [email protected]  varchar(300),
 @id  varchar(3000),
 @m  int,
 @n  int 
 --set  @str='a,b,c,d,e' 
 --set  @m=CHARINDEX(',',@str) 
 --set  @n=1 
 --WHILE  @m>0 
 --BEGIN 
 --    set  @id=substring(@str,@n,@[email protected]
 --    print  @id 
 --    set  @[email protected]+1 
 --    set  @m=CHARINDEX(',',@str,@n) 
 --END
 set @m=charindex(@char,@strparams)
 set @n=1
 if @m>0
 begin
  set @id=substring(@strparams,@m,@[email protected])

 end
 else
 begin
  set @id=null
 end
   return @id

END
GO

通過。

相關推薦

sqlserver編寫定義函式返回問題

寫了一個獲取符號間隔字串的函式,原先程式碼如下 CREATE FUNCTION funGetSubStr (  -- Add the parameters for the function here  @StrParams nvarchar(4000),  @char ch

shell定義函式返回

shell中的自定義函式 直接看截圖和程式碼吧,一目瞭然! #!/bin/bash #如下語句會報錯,因為在呼叫test1函式之前要先宣告test1函式 #也就是說,函式的呼叫語句要放在函式的宣告的後面(呼叫函式語句的位置要放在函式宣告語句的位置的後面) #test1

C# winform 定義函式找不到Form的控制元件和定義的全域性變數

今天碰到一個比較狗血的問題,想了很多辦法,最後發現,原來如此的坑。 在新建一個form頁面後,我們在程式碼頁面寫程式碼,往往會寫自定義的方法,一般情況下,在自定義的方法中是可以找到form頁面中的控制元件和自定義的全域性變數, 但是如果我們在自定義的方法前面加了static,那麼坑就出來啦,從此這個方法好

shell定義函式

shell中的自定義函式 自定義函式 基本語法 [ function ] funname[()] { Action; [return int;] } 呼叫直接寫函式名:funname [值] 注意: 1 函式體不能為空,函式體為空會報錯,裡面寫一條語句,比如 echo

pyspark定義函式

由於目前的pyspark不支援dataset,因此只能用dataframe+udf或者rdd的方式來對列進行資料處理。這裡介紹一下udf,udf註冊有兩種方法,一種是呼叫register方法,一種是呼叫udf函式。兩者都能在withColumn和apply中使用

Shell指令碼定義函式

在寫程式時,經常會用到函式,一般開發工具擁有豐富的函式庫。但有時還需要根據自己的需要自定義函式滿足我們的需求。 在linux中,寫shell指令碼也一樣,有時會用到自定義函式。 函式,最簡單的定義為:將一組命令集或語句形成一個可用塊,這些塊稱為函式。 1、定義函式的格式:

EXCEL表格直接使用vb6建立的dll定義函式

使用EXCEL2010+VB6.0 1、在vb6.0中新建一個ActiveX dll工程 名:=阿亮自定義DLL 2、新建一個類(名:=aliangDLL) 3、寫入程式碼 Function 不重複數(rng As Object) As Integer Dim d

hive使用定義函式(UDF)實現分析函式row_number的功能

1. hive0.10及之前的版本沒有row_number這個函式,假設我們現在出現如下業務場景,現在我們在hdfs上有個log日誌檔案,為了方便敘述,該檔案只有2個欄位,第一個是使用者的id,第二個是當天登入的timestamp,現在我們需要求每個使用者最早登入的那條記錄(

Mysql定義函式定義過程

MYSQL中建立儲存過程和函式分別使用CREATE PROCEDURE和CREATE FUNCTION使用CALL語句來呼叫儲存過程,儲存過程也可以呼叫其他儲存過程函式可以從語句外呼叫,能返回標量值建立儲存過程語法CREATE PROCEDURE sp_name ([ pro

import定義函式,python2 和python3的不同

一種情況:假如你有一個指令碼函式a.py和b.py存放在file資料夾中。當你想呼叫a函式時。寫作:import file.a。但如果a.py需要呼叫b.py函式的話,在python2環境下a.py檔案中直接用impo

儲存過程呼叫定義函式(不在同一使用者下)提示無許可權或識別符號無效

 問題描述:           在A使用者下自定了一個函式 : getName(); 然後在B使用者下建立儲存過程,呼叫了A使用者下的自定義函式getName;在編譯儲存過程時提示函式 getName無效。 解決方法:           將A使用者下自定義函式getNa

DevExpressGridControl定義匯總列(有選擇性的匯總)

checked order sender end void calc custom expr total 今天碰到有同事遇到這個方面的需求,貼一下吧。 private void gvTop_CustomSummaryCalculate(object sender, Cust

為什麼C++stack的pop()函式返回返回void

C++中stack,其中有兩個方法: pop(), 返回void, top(),返回棧頂的引用。 看起來pop函式非常的浪費,為什麼pop不再是返回值呢。 我收集到兩個原因: 1. 安全原因: 假設有這個stack類 class Stack {     pub

hive報錯編寫定義函式匯入依賴報錯 Missing artifact jdk.tools:jdk.tools:jar:1.6

少了一個jar包 <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.

visual studio 配置屬性增加定義巨集和巨集

visual studio中配置自己的巨集。 下面是vs中的巨集,SolutionDir這個是工程所在目錄資料夾。如何建立自己的巨集呢 檢視->其他視窗->屬性管理器,跳轉到屬性管理器介面。然後選擇一個工程,右鍵出現下圖所示 點選新增新專案屬性表,給屬性表命名一個

Java如何定義HTTPServlet的請求方式?

自定義HTTPServlet中的請求方式: 本Markdown編輯器使用[StackEdit][6]修改而來,用它寫部落格,將會帶來全新的體驗哦: 應用中的所有對Servlet的請求都需要新增method=xxx的請求引數 在應用的Servlet類中, 只

R語言-編寫定義函式

一、函式構造器 每一個R函式都包括三個部分:函式名,程式主體以及引數集合,在編寫自定義R函式時,需要將三個部分各自儲存在一個R物件中。這裡需要使用function函式,形如: my_function<-function(){} function函式可

sqlserver定義函式(標量函式,表函式

在sqlserver中,根據函式返回值形式的不同將使用者自定義的函式分為”標量值函式“和”表值函式“兩種型別。如下圖所示,可以在資料庫中的可程式設計->函式中進行檢視。 標量函式,返回單個值,表值函式返回表資料 1.標量值函式 標量值函式返回一個確定型別的標量值,其

sqlserver,一個定義函式(提取字串的數值,包含0-9和‘.’)

GO ALTER FUNCTION [dbo].[clear_num](@s VARCHAR(100)) RETURNs VARCHAR(100) as BEGIN WHILE PATINDEX('%[^0-9.]%', @s)>=1 BEGIN set @s=

資料結構與演算法----定義函式與資料成員

近期在梳理知識,做一個小結,希望自己能多多使用 在標頭檔案中: enum sign {plus, minus}; class Accruency { public: Accruency(sign s = plus, unsigned long d = 0, unsigned in