Postgresql函数无法转换为sql server

nx7onnlm  于 2022-11-28  发布在  PostgreSQL
关注(0)|答案(1)|浏览(136)

我必须将postgresql函数转换为sql server
Postgresql函数,我必须将其转换为sql server

CREATE FUNCTION mismatch
(
    column1 text,
    column2 integer,
    column3 integer
)
RETURNS bigint
AS
$$
BEGIN

    RAISE EXCEPTION 'column1[%]column2[%]column3[%]', column1, column2, column3
    USING ERRCODE = '50002';

END;
$$
LANGUAGE plpgsql;

此postgresql函数在下面的查询中调用,用于CTE,然后更新表

SELECT mismatch('text', @column1, columnname)
            FROM foo
            WHERE (@id <= 1 OR id = @id)
            AND idKey = @idKey
            AND Index1 = 0

我尝试过在sql server中使用标量用户定义函数,但不起作用。

CREATE FUNCTION mismatch
(
    @column1 varchar(max),
    @coulmn2 integer,
    @coulmn3 integer
)
RETURNS bigint
AS
BEGIN

RAISERROR(N'column1%scolumn2%scolumn3%s'
              ,50002
              ,1
              ,@column1
              ,@coulmn2
              ,@column3);

END;

我曾考虑在SQL Server中使用try-catch事务,但是postgresql将其与选择查询结合使用。thnksss,还有其他方法吗

gv8xihay

gv8xihay1#

有3个错误

    • 第一个**

变量名错误:
@column1 varchar(最大值),
@coulmn2整数,
@coulmn3整数
而在raiserror中:
(2)在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在1000 ℃下,在100 ℃下,在100 ℃下,在100 ℃下,在1

    • 第二个**

SQL中的任何函数都必须有RETURN语句,所以添加一个RETURN 0就可以解

    • 三档**

T-SQL函数将对每一行执行,因此函数中不能有RAISERROR,但您可以强制错误:

CREATE FUNCTION CHECK_EVIL(@VALUE VARCHAR(100)) RETURNS BIT AS BEGIN
    IF @VALUE LIKE '%EVIL%'
        SET @VALUE = 'There is "evil" in your value' --It can't be converted to BIT
    ELSE
        SET @VALUE = 0
    RETURN @VALUE
END

测试:
SELECT DBO. CHECK_EVIL('这是确定的')--〉返回0
SELECT DBO. CHECK_EVIL('uh evil')--〉引发错误:
消息245,级别16,状态1,第10行
将varchar值'There is "evil" in your value'转换为资料类型bit时,转换失败。
很恶心吗?是的,但很管用

相关问题