SQLサーバーは、ストアドプロシージャを使用して、任意のフィールドの情報を照会します

次のデータテーブルを作成します
ここに写真の説明を挿入

CREATE TABLE EMP(
EMPNO INT  PRIMARY KEY, -- 员工编号
ENAME VARCHAR(10), -- 员工姓名
JOB VARCHAR(9), -- 员工工作
MGR INT, -- 员工直属领导编号
HIREDATE DATE, -- 入职时间
SAL FLOAT, -- 工资
COMM FLOAT, -- 奖金
DEPTNO INT,  -- 所在部门
FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO));  -- 关联dept表  

-- ALTER TABLE EMP ADD FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO);
INSERT INTO EMP VALUES(7369,'SMITH','职员',7566,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','销售员',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','销售员',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','经理',7839,'1981-04-02',2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','销售员',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','经理',7839,'1981-05-01',2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','经理',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','职员',7566,'1987-07-03',3000,2000,20);
INSERT INTO EMP VALUES(7839,'KING','董事长',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNERS','销售员',7698,'1981-09-08',1500,50,30);
INSERT INTO EMP VALUES(7876,'ADAMS','职员',7566,'1987-07-13',1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','职员',7698,'1981-12-03',1250,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','销售员',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','职员',7782,'1981-01-23',1300,NULL,10);

ここで、部門10のマネージャーと部門30の従業員の番号と特定のフィールド情報(従業員の名前など)を照会したいと思います。
最初にこれを作成しました

if (exists (select * from sys.objects where name = 'search'))
    drop proc search
GO
CREATE PROC search(
@some char(5))
AS
	BEGIN
		SELECT EMPNO ,@some FROM EMP 
		WHERE DEPTNO = 10 AND JOB = '经理' 
		OR DEPTNO = 20 AND JOB = '职员';
	END
GO
exec search 'ENAME'

処刑の結果はこんな感じで、
ここに写真の説明を挿入
連れて行ってくれたご主人に聞いてみたら、変えたいって言ってた

if (exists (select * from sys.objects where name = 'search'))
    drop proc search
GO
CREATE PROC search(
@some char(5))
AS
	BEGIN
		exec ('SELECT EMPNO ,'+@some+ ' FROM EMP '
		+'WHERE DEPTNO = 10 AND JOB = ''经理'' '
		+'OR DEPTNO = 20 AND JOB = ''职员''');
	END
GO
exec search 'ENAME'

実行結果は次のとおりです。
ここに写真の説明を挿入
任意のフィールドを照会するストアドプロシージャを作成するときは、入力変数の「フィールド」に注意してください。つまり、コンパイルプロセス中に直接渡される場合、変数は文字としてのみ使用され、文字としては使用されません。フィールド名を照会するための1つ。changeメソッドは、クエリステートメントと入力変数を文字列の形式でスプライスしてから、スプライスされたクエリステートメントを実行することです。
さまざまな方法を比較して分析を行った大物もいます。興味がある場合は、
https://www.cnblogs.com/wy123/p/5958047.htmlをご覧ください。

おすすめ

転載: blog.csdn.net/zhuyin6553/article/details/90297028