PervasiveSQL-在IfIf语句中插入/更新记录

时间:2018-06-21 05:48:05

标签: sql pervasive pervasive-sql

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 

正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

从普遍的documentation

  

限制

     

在以下情况下不能使用CREATE DATABASE或DROP DATABASE语句:   用户定义的功能。表操作CREATE,ALTER,UPDATE,   用户定义的函数中不允许使用DELETE和INSERT。

应该将其从CREATE FUNCTION更改为CREATE PROCEDURE并使其正常工作。我做到了,它创建了程序。