我必须将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,还有其他方法吗
1条答案
按热度按时间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,但您可以强制错误:
测试:
SELECT DBO. CHECK_EVIL('这是确定的')--〉返回0
SELECT DBO. CHECK_EVIL('uh evil')--〉引发错误:
消息245,级别16,状态1,第10行
将varchar值'There is "evil" in your value'转换为资料类型bit时,转换失败。
很恶心吗?是的,但很管用