G'day。我正在尝试创建一个基本功能,该功能检查符合特定条件的记录数。如果没有,则执行插入并返回0,否则将更新现有记录并返回1。在Insert和Update语句的位置出现语法错误。这是我的SQL脚本(仅供参考,我是不熟悉的新手,如果有人能更好地执行更新/插入,那么我无所不能):
CREATE FUNCTION "InsertUpdateWebData"(:KeyType CHAR(1), :KeyValue CHAR(50),
:WebData CHAR(100), :WhiteSpace LONGVARCHAR, :Spare CHAR(97)) RETURNS INTEGER
AS
BEGIN
DECLARE :RecordCount INTEGER;
SET :RecordCount = (SELECT COUNT(*) FROM SYS_WebData WHERE WBD_KeyType
= :KeyType and WBD_KeyValue = :KeyValue);
IF :RecordCount = 0 THEN
BEGIN
INSERT INTO SYS_WebData(WBD_KeyType, WBD_KeyValue, WBD_Data,
WBD_WhiteSpace, WBD_Spare) VALUES (:KeyType, :KeyValue, :WebData,
:WhiteSpace, :Spare);
RETURN 0;
END
ELSE
BEGIN
UPDATE SYS_WebData SET WBD_Data = :WebData, WBD_WhiteSpace = :WhiteSpace,
WBD_Spare = :Spare WHERE WBD_KeyType = :KeyType AND WBD_KeyValue =
:KeyValue;
RETURN 1;
END
END IF
END
正确的语法是什么?
答案 0 :(得分:0)
从普遍的documentation:
限制
在以下情况下不能使用CREATE DATABASE或DROP DATABASE语句: 用户定义的功能。表操作CREATE,ALTER,UPDATE, 用户定义的函数中不允许使用DELETE和INSERT。
您应该将其从CREATE FUNCTION
更改为CREATE PROCEDURE
并使其正常工作。我做到了,它创建了程序。