Maison base de données tutoriel mysql sql存储过程in参数如何传递及问题解决

sql存储过程in参数如何传递及问题解决

Jun 07, 2016 pm 05:49 PM
存储过程

下面来介绍在sql存储过程in参数如何传递及问题解决,有需要的朋友可参考参考。

--1. 构造使用IN子句的动态Transact-SQL方法进行编号查询

--a. 要查询的字段类型是数字型

 代码如下 复制代码

--查询的值列表
DECLARE @idlist varchar(100)
SET @idlist='1,2,3'

--拼接并执行动态Transact-SQL语句
EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
GO

--b. 要查询的字段类型是字符型
--查询的值列表已经加上了字符串边界符
DECLARE @idlist varchar(100)
SET @idlist='''a'',''b''''a'',''c'''

--拼接并执行动态Transact-SQL语句
EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
GO

--查询的值列表没有字符串边界符
DECLARE @idlist varchar(100)
SET @idlist='a,b''a,c'

--由于是字段类型是,所以在拼接时,必须为其加上字符串边界符(')
DECLARE @s varchar(1000)
SET @s=''''
    +REPLACE(REPLACE(@idlist,'''',''''''),',',''',''')
    +''''

--拼接并执行动态Transact-SQL语句
EXEC('SELECT * FROM tbname WHERE fdname IN('+@s+')')
GO

/*=====================================================*/


--2. 使用LIKE或者PATINDEX进行编号查询
--查询的值列表
DECLARE @idlist varchar(100)
SET @idlist='1,2,3'

--查询
SELECT * FROM tbname WHERE CHARINDEX(','+RTRIM(fdname)+',',','+@idlist+',')>0
SELECT * FROM tbname WHERE PATINDEX('%,'+RTRIM(fdname)+',%',','+@idlist+',')>0
SELECT * FROM tbname WHERE ','+@idlist+',' LIKE '%,'+RTRIM(fdname)+',%'
GO

/*=====================================================*/


--3. 编号查询中常见的错误
--a. 最容易犯的错误:表达式充当表达式列表。
DECLARE @s varchar(100)
SET @s='1'
SELECT id,name FROM sysobjects WHERE id IN(@s)
/*--结果
id          name
---------------- ------------
1           sysobjects
--*/

SET @s='1,2,3'
SELECT id,name FROM sysobjects WHERE id IN(@s)
/*--结果
服务器: 消息 245,级别 16,状态 1,行 3
将 varchar 值 '1,2,3' 转换为数据类型为 int 的列时发生语法错误。
--*/
GO

--b. 生成动态Transact-SQL语句时忽略了数据类型。
DECLARE @s varchar(100)
SET @s='U,S'
EXEC('SELECT id,name FROM sysobjects WHERE id IN('+@s+')')
/*--结果:
服务器: 消息 207,级别 16,状态 3,行 1
列名 'S' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'U' 无效。
--*/
GO

--c. 忽略了比较的精确性问题。
--要查询的数据
DECLARE @t TABLE(col varchar(10))
INSERT @t SELECT '1'
UNION ALL SELECT '11'
UNION ALL SELECT '111'
UNION ALL SELECT '22'

--查询
DECLARE @s varchar(100)
SET @s='111,22'
SELECT * FROM @t WHERE CHARINDEX(col,@s)>0
/*--结果
col       
----------
1
11
111
22
-*/
GO

在SQL Server Management Studio里执行这个(我使用的是SQL Server 2005如果是SQL 2000这个函数要改些内容如:VARCHAR(MAX)),会生成一个表值函数,然后使用时呢,比如你想实现:In(@ids)这时可以换成 In(select * from Split(@ids , ','))

这个函数的作用呢,就是把你输入的字符按一定的分隔符分开,并放在一个表里的一列里,然后返回。

 代码如下 复制代码

--引用 Select * From Split('1,2,3' , ',')
--引用 Select * From Split('我,是,www.111cn.net' , ',')
CREATE   FUNCTION [dbo].[Split]
(
@c VARCHAR(MAX) ,
@split VARCHAR(50)
)
RETURNS @t TABLE ( col VARCHAR(50) )
AS
BEGIN
    WHILE ( CHARINDEX(@split, @c) 0 )
        BEGIN
            INSERT  @t( col )
            VALUES  ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) )
            SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')
        END
    INSERT  @t( col ) VALUES  ( @c )
    RETURN
END

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Étapes et précautions pour la mise en œuvre des mises à jour par lots à l'aide de procédures stockées Oracle Étapes et précautions pour la mise en œuvre des mises à jour par lots à l'aide de procédures stockées Oracle Mar 08, 2024 pm 04:12 PM

Titre : Étapes et précautions d'implémentation des mises à jour par lots par les procédures stockées Oracle Dans la base de données Oracle, les procédures stockées sont un ensemble d'instructions SQL conçues pour améliorer les performances de la base de données, réutiliser le code et renforcer la sécurité. Les procédures stockées peuvent être utilisées pour mettre à jour les données par lots. Cet article explique comment utiliser les procédures stockées Oracle pour implémenter des mises à jour par lots et fournit des exemples de code spécifiques. Étape 1 : Créer une procédure stockée Tout d’abord, nous devons créer une procédure stockée pour implémenter les opérations de mise à jour par lots. Voici comment créer une procédure stockée

Procédure stockée Oracle : méthode d'implémentation pour déterminer si une table existe Procédure stockée Oracle : méthode d'implémentation pour déterminer si une table existe Mar 08, 2024 pm 09:18 PM

Les procédures stockées dans la base de données Oracle sont un type spécifique de procédures stockées utilisées pour exécuter une série d'instructions SQL et d'opérations sur les données dans la base de données. Dans le travail réel de développement de bases de données, nous devons parfois déterminer si une certaine table existe dans la base de données, afin de pouvoir effectuer un jugement et un traitement logique dans le processus stocké. Ci-dessous, nous présenterons comment implémenter la méthode permettant de déterminer si une table existe dans la base de données Oracle et fournirons des exemples de code spécifiques. Tout d'abord, nous pouvons utiliser la table système user_tables ou all_t

Comment supprimer une procédure stockée dans MySQL Comment supprimer une procédure stockée dans MySQL Sep 05, 2023 am 10:25 AM

Les méthodes MySQL pour supprimer des procédures stockées incluent l'utilisation de l'instruction DROP PROCEDURE, l'utilisation de MySQL Workbench et l'utilisation d'outils de ligne de commande. Introduction détaillée : 1. Utilisez l'instruction DROP PROCEDURE Les étapes consistent d'abord à ouvrir le client MySQL ou à utiliser n'importe quel outil prenant en charge MySQL, puis à vous connecter à votre base de données MySQL et enfin à exécuter l'instruction SQL suivante pour supprimer la procédure stockée 2. Utilisez MySQL Workbench pour supprimer les procédures stockées, etc.

Principes de mise en œuvre et applications des procédures stockées Golang Principes de mise en œuvre et applications des procédures stockées Golang Feb 22, 2024 pm 04:57 PM

Principes de mise en œuvre et applications des procédures stockées Golang Une procédure stockée est un programme précompilé qui est stocké dans une base de données relationnelle et peut être appelé par une application. Elle peut réduire efficacement le coût de la transmission réseau des données et améliorer l'efficacité d'exécution de la base de données. Bien que Golang ne prenne pas directement en charge les procédures stockées, vous pouvez simuler les fonctions des procédures stockées à l'aide d'instructions SQL. Cet article présentera les principes et les applications de la mise en œuvre de procédures stockées dans Golang et fournira des exemples de code spécifiques. 1. Le principe de mise en œuvre de la procédure stockée Golang est en Gol

Stratégie d'optimisation des performances pour la mise à jour par lots de procédures stockées Oracle Stratégie d'optimisation des performances pour la mise à jour par lots de procédures stockées Oracle Mar 08, 2024 pm 09:36 PM

Stratégies d'optimisation des performances pour les mises à jour par lots des procédures stockées Oracle Dans la base de données Oracle, une procédure stockée est un objet de base de données utilisé pour traiter la logique des données ou effectuer des tâches spécifiques. Elle peut fournir certaines stratégies d'optimisation des performances, en particulier lors de la mise à jour des données par lots. La mise à jour des données par lots implique généralement un grand nombre d'opérations au niveau des lignes. Afin d'améliorer les performances et l'efficacité, nous pouvons adopter certaines stratégies et techniques pour optimiser les performances des procédures stockées. Ce qui suit présente quelques stratégies d'optimisation des performances pour les mises à jour par lots des procédures stockées Oracle et fournit des exemples de code spécifiques.

Comparaison détaillée et analyse des avantages des procédures et fonctions stockées Oracle Comparaison détaillée et analyse des avantages des procédures et fonctions stockées Oracle Mar 03, 2024 am 10:24 AM

Titre : Comparaison détaillée et analyse des avantages des procédures et fonctions stockées Oracle. Dans la base de données Oracle, les procédures et fonctions stockées sont deux objets de base de données importants. Elles peuvent toutes deux être utilisées pour encapsuler une série d'instructions et de logique SQL afin d'améliorer l'efficacité et la complexité des données. Opérations. Cet article comparera en détail les caractéristiques des procédures et fonctions stockées Oracle, ainsi que leurs avantages respectifs, et fournira des exemples de code spécifiques. Procédure stockée Une procédure stockée est un ensemble d'instructions SQL et de logique de code PL/SQL pré-écrites et stockées dans la base de données.

Comment écrire des procédures stockées efficaces à l'aide de Golang Comment écrire des procédures stockées efficaces à l'aide de Golang Mar 22, 2023 pm 02:24 PM

Golang est un langage de programmation puissant qui peut facilement implémenter des procédures stockées. Dans cet article, nous présenterons comment écrire des procédures stockées efficaces à l'aide de Golang et les avantages de leur utilisation dans vos projets.

Comment écrire des procédures stockées et des fonctions personnalisées dans MySQL en utilisant C# Comment écrire des procédures stockées et des fonctions personnalisées dans MySQL en utilisant C# Sep 22, 2023 am 09:42 AM

Comment écrire des procédures stockées et des fonctions personnalisées dans MySQL à l'aide de C# Introduction : MySQL est un système de gestion de base de données open source largement utilisé et C# est un langage de programmation orienté objet couramment utilisé. Au cours du processus de développement, nous devons souvent utiliser des procédures et des fonctions stockées dans une base de données pour améliorer la réutilisabilité et les performances du code. Cet article explique comment utiliser C# pour écrire des procédures stockées et des fonctions personnalisées dans une base de données MySQL et fournit des exemples de code spécifiques. 1. Procédures stockées Une procédure stockée est un ensemble d'instructions SQL qui effectuent des tâches spécifiques.

See all articles