/////////////////////////////////////变量的使用/**//*变量声明方法*/(1)DECLARE @customer_count INT, @total_sales REAL, @best_sales DATETIME(2)DECLARE @customer_count INT、 /**//*变量赋值方法*/(1)SET @customer_count = 0(2)SELECT @customer_count = 0(3)DECLARE @total_id CHAR(6)SELECT @total_id = stor_id FROM discounts /////////////////////////////////////函数CREATE FUNCTION ufn_getDiscount(@stor_id char(4))RETURNS REALBEGINRETURN (SELECT discount FROM discounts WHERE stor_id = @stor_id)END SELECT lowqty, dbo.ufn_getDiscount(stor_id)/**//*函数返回单值时在调用是必须加拥有者名字*/FROM discountsWHERE dbo.ufn_getDiscount(stor_id) > 6 /**//*RETURNS 对返回表进行描述*/CREATE FUNCTION ufn_getDiscountsInfo(@stor_id char(4))RETURNS @info_table TABLE(info_lowqty INT,highqty INT,discount INT )BEGININSERT @info_table SELECT Lowqty, highqty, discOunt FROM discounts WHERE stor_id = @stor_idRETURNEND SELECT discount FROM ufn_getDiscountsInfo(8042) ////////////////////////////////////////存储过程CREATE PROCEDURE usp_add_coder@name VARCHAR(30),@address VARCHAR(30),@office INT = 1, /**//*初值=1*/@manager INT = 1ASINSERT INTO coder(name, address, office, manager)VALUES (@name, @address, @office, @manager) EXECUTE usp_add_coder 'ckcs', '福建', 1, 2 ////////////////////////////////////////触发器CREATE TRIGGER tri_update_order ON ordersFOR UPDATEASDECLARE @rowcount intSET @rowcount = @@rowcountIF (UPDATE(EmployeeID) OR UPDATE(Freight)) /**//*只要有更新EmployeeID或Freight的值触发器将被触动*/BEGINIF (@rowcount > 1)BEGINROLLBACK TRANSACTIONRAISERROR('每次更新只能更新一条记录', 16, 2)ENDELSE BEGINUPDATE employee_2 SET salary = salary - (SELECT Freight FROM DELETED WHERE (employee_2.emp_id = (SELECT EmployeeID FROM DELETED)))ENDEND CREATE TRIGGER tri_delete_employee ON employeeFOR DELETEASIF @@rowcount > 1 /**//*判断操作是否影响到两行*/BEGIN ROLLBACK TRANSACTIONRAISERROR('你不能同时删除两个雇员', 16, 2)ENDELSE BEGINUPDATE employee_1 SET NAME = 'jinlp' WHERE emp_id = (SELECT employee_id FROM DELETED)UPDATE employee_2 SET NAME = 'jinlp2' WHERE emp_id = (SELECT employee_id FROM DELETED) END /**//*类型(1)@checking_balance和@loc_balance在存储过程里面定义*//**//*存储过程的定义*/CREATE PROCEDURE usp_process_check@account_number INT,@check_number INT,@check_amount INT,@checking_balance REAL OUTPUT,@loc_used REAL OUTPUT,@loc_balance REAL OUTPUTASSET @loc_used = 0 /**//*设置处始值*/SELECT @checking_balance = check_balance FROM customers /**//*对@checking_balance进行赋值*/ WHERE account_number = @account_numberSELECT @loc_balance = (SELECT loc_balance FROM customers WHERE account_number = @account_number)IF @checking_balance < @check_amountSET @loc_used = (@check_amount - @checking_balance)SET @checking_balance = @checking_balance - @check_amount + @loc_usedINSERT INTO checks VALUES(@account_number, @check_number, @check_amount)UPDATE customers SET loc_balance = @loc_balance, checking_balance = @checking_balance WHERE account_number = @account_number /////////////////////////////////建立数据库CREATE DATABASE home_databaseON(NAME = 'MYhome_data',FILENAME = 'e:database backupMYhome_data.mdf',SIZE = 10MB,MAXSIZE = 15MB, /**//*或是使用unlimited*/FILEGROWTH = 1MB )LOG ON(NAME = 'MYhome_log',FILENAME = 'e:database backupMYhome_log.log',SIZE = 3MB,MAXSIZE = 6MB,FILEGROWTH = 1MB) //////////////////////////////////游标 DECLARE cur_payroll_work_3 SCROLL CURSORFOR SELECT * FROM orders -- MS-SQL强制把 SCROLL 游标设为 READONLY OPEN cur_payroll_work_3 -- 使用数据填充游标 FETCH NEXT FROM cur_payroll_work_3 -- 下一行 FETCH PRIOR FROM cur_payroll_work_3 -- 上一行 FETCH FIRST FROM cur_payroll_work_3 -- 第一行 FETCH LAST FROM cur_payroll_work_3 -- 最后一行 FETCH RELATIVE 1 FROM cur_payroll_work_3 FETCH RELATIVE -1 FROM cur_payroll_work_3 FETCH ABSOLUTE 1 FROM cur_payroll_work_3 --第1行 FETCH ABSOLUTE -1 FROM cur_payroll_work_3 --倒数第一行 --CLOSE 将释放游标占有的资源,但是游标在当前会话中仍然存在。CLOSE cur_payroll_work_3 --deallocate会消毁游标,执行它后游标不再存在。DEALLOCATE cur_payroll_work_3 -- MS-SQL强制把 SCROLL 游标设为 READONLY 可使用DYNAMIC游标实现可更改的游-- 标DECLARE cur_orders_4 CURSOR DYNAMIC FOR SELECT * FROM ordersFOR UPDATE OF ShipAddress, ShipViaOPEN cur_orders_4 FETCH RELATIVE 1 FROM cur_orders_4 --可回滚 DELETE FROM orders WHERE CURRENT OF cur_orders_4 --可更新 UPDATE orders SET ShipAddress = '福建' WHERE CURRENT OF cur_orders_4 --可更新 这是我在学习SQL编程时对一些常见的SQL语句的摘录和总结,希望对你有些帮助,主要是针对MS SQLSERVER编程.