Navicatは機能ソリューション共有を作成できません

Navicatは機能ソリューション共有を作成できません

初めて MySQL FUNCTION を書いたとき、エラーが何度も発生しました。

Err] 1064 - SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルを参照して、'`company_id`の近くで使用する正しい構文を確認してください。int) RETURNS varchar(20) CHARSET utf8

始める

元の関数:

CREATE DEFINER=`33323`@`%` FUNCTION `createSaleCode`(`benginStr` varchar,`company_id` int) 戻り値 varchar(20) CHARSET utf8 
始める 
  nearnum VARCHAR(20)を宣言します。  
 nowdatepre VARCHAR(20) を宣言します。 
 numout VARCHAR(20)を宣言します。  
 SELECT a.sale_code INTO nearnum FROM d_sale a WHERE a.company_id = company_id ORDER BY a.sale_id DESC limit 1; 
 SELECT concat(extract(year_month from now()),LPAD(extract(day from now()), 2, 0)) INTO nowdatepre; 
 IF 位置(nowdatepre,nearnum)>0  
  それから  
    numout = nearnum +1 を設定します。   
  それ以外  
    numout = concat(beginStr,nowdatepre,'00001') を設定します。  
  終了の場合; 
 戻り値 numout; 
終わり

この関数は Navicat では実行できません。何度か試行した後、コードは次のように変更されました。

区切り文字 $$ 
CREATE DEFINER=`12212`@`%` FUNCTION createSaleCode(benginStr varchar(20),company_id int(11) ) 戻り値 varchar(20) CHARSET utf8 
始める 
  nearnum VARCHAR(20)を宣言します。  
 nowdatepre VARCHAR(20) を宣言します。 
 numout VARCHAR(20)を宣言します。  
 SELECT a.sale_code INTO nearnum FROM d_sale a WHERE a.company_id = company_id ORDER BY a.sale_id DESC limit 1; 
 SELECT concat(extract(year_month from now()),LPAD(extract(day from now()), 2, 0)) INTO nowdatepre; 
 IF 位置(nowdatepre,nearnum)>0  
  それから  
    numout = nearnum +1 を設定します。   
  それ以外  
    numout = concat(beginStr,nowdatepre,'00001') を設定します。  
  終了の場合; 
 戻り値 numout; 
終わり$$ 
区切り文字 ;

問題は解決しました。

デフォルトでは、区切り文字はセミコロンです。

要約する

以上が、Navicat が関数を作成できない問題の解決方法に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。興味のある方は、引き続きこのサイトを参照してください。Redis と MySQL の違いの簡単な紹介、MYSQL サブクエリとネストされたクエリの最適化例の分析、いくつかの重要な MySQL 変数などが掲載されています。ご質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信いたします。このサイトをサポートしてくれた友人たちに感謝します!

以下もご興味があるかもしれません:
  • Navicat でストアド プロシージャ、トリガーを作成し、カーソルを使用する簡単な例 (画像とテキスト)
  • Navicat 8はデータベースを作成し、ユーザーを作成して権限を割り当てるグラフィックメソッド
  • Navicat 8 を使用してデータベースを作成し、データをインポートしてユーザーと権限を管理する [グラフィック方式]

<<:  React Native スキャフォールディングの基本的な使い方の詳細な説明

>>:  Alibaba Cloud MySQL スペースをクリーンアップする方法

推薦する

JS での new の手書き実装

目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...

CSSのline-heightを継承する方法

Line-height はどのように継承されますか?30px などの特定の値を書き込むと、この値が継...

docker+devpi を使用してローカル pypi ソースをビルドする方法

以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更...

MySQLオンラインDDLの使用に関する詳細な説明

目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...

CSS Houdini でダイナミックな波効果を実現

CSS Houdini は、CSS 分野における最もエキサイティングなイノベーションとして知られてい...

MySQLクエリキャッシュに関するヒント

目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...

Linux CentOS 7.4 で mysql5.7.20 のパスワードを変更する方法

MySQL がバージョン 5.7 にアップグレードされた後、セキュリティが大幅に向上しました。しかし...

JavaScriptを使用してページ効果を作成する

11. JavaScriptを使用してページ効果を作成する11.1 DOMプログラミングDOM プロ...

Linuxにおけるumaskコマンドの使用原理と計算方法の詳しい解説

目次umask umaskの使用法原理1. umask値2. ファイルディレクトリの最大権限3. 従...

シンプルなページング効果を実現するjQuery+Ajax

この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...

MySQL テーブル自動増分 ID オーバーフロー障害レビュー ソリューション

問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

CSS3のwebkit-box-reflectを巧みに使用して、さまざまな動的効果を実現します。

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

Vue での this.$set の動的データバインディングのケーススタディ

インターネット上の this.$set の説明はわかりにくいと感じます。単一データ、オブジェクト、配...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...