Java存储过程发出错误

时间:2017-06-27 11:09:22

标签: sql oracle java-stored-procedures

我试图通过以下方式创建存储过程:

DROP procedure IF EXISTS plus1inout
/;
CREATE procedure plus1inout (IN arg int, OUT res int)
BEGIN ATOMIC
    set res = arg + 1;
END
/;

我收到以下错误:

Msg 156, Level 15, State 1.
Incorrect syntax near the keyword 'IF'.
Msg 156, Level 15, State 1.
Incorrect syntax near the keyword 'IN'. (Line 3)

2 个答案:

答案 0 :(得分:1)

几件事。那" /"来自oracle。如果你愿意,你可以使用GO这个词。检查是否存在:使用此代码:

public static readonly DependencyProperty MaxTextLengthProperty =
        DependencyProperty.Register(
            "MaxTextLength",
            typeof(int),
            typeof(ComboBoxAutoComplete),
            new UIPropertyMetadata(35));
        public int MaxTextLength
        {
            get { return (int)GetValue(MaxTextLengthProperty); }
            set
            {
                SetValue(MaxTextLengthProperty, value);
                LimitTextInCombobox();
            }
        }

        private void LimitTextInCombobox()
        {
            Combobox.Text = Combobox.Text.Substring(0, MaxTextLength);   
        }    

然后您创建该过程。 在创建中,参数声明是错误的。

<span class="blue">stack<c>(</c>x<c>)</c>overflow</span>

.blue{color:blue;}
.blue c{color:black;}

答案 1 :(得分:1)

您的语法在sql server中无效。

用于检查存在使用object_id函数

IF OBJECT_ID('plus1inout', 'P') IS NOT NULL
    DROP PROCEDURE plus1inout

对于输入参数,您不必提及IN关键字。对于OUTPUT参数,请在结尾处使用关键字OUT。参数也以@

中的Sql Server开头
CREATE PROCEDURE Plus1inout (@arg INT,
                             @res INT output)
AS
  BEGIN
      SET @res = @arg + 1;
  END 

SQL SERVER 2016中,他们介绍了用于检查过程是否存在的语法

DROP procedure IF EXISTS plus1inout