① PHP批量生成注册码并保存到数据库
改变一下注册码的规则,比如1, 时分秒-随机1-随机2-随机3 重复的几率小2, 时分秒-随机1-随机2-随机3-当前for循环的次数 重复的几率很小3, 日时分秒-随机1-随机2-随机3-当前for循环的次数 重复的几率非常小4, 月日时分秒-随机1-随机2-随机3-当前for循环的次数 重复的几率非常非常小5, 年月日时分秒-随机1-随机2-随机3-当前for循环的次数 100%没有重复(除非时间倒退^__^)说了这么多其实time()函数-随机1-随机2-随机3-当前for循环的次数 就OK了要点就是加上时间字符串和for循环次数$i
你可以用output类型的参数。这里的输出是一个字符串,用“,”分割,你试试
IF
EXISTS
(
SELECT
*
FROM
dbo.sysobjects
WHERE
type
=
'P'
AND
name
=
'P_XXX'
)
BEGIN
DROP
PROCEDURE
[dbo].[P_XXX]
END
GO
CREATE
PROCEDURE
[dbo].[P_XXX]
(
@date
DATETIME
,
@Name
VARCHAR(MAX)
OUTPUT
)
AS
BEGIN
IF
EXISTS
(
SELECT
*
FROM
Daily
WHERE
Date
=
@date
)
BEGIN
SELECT
SUBSTRING(A.Name,
0,
LEN(A.Name))
FROM
(
SELECT
Name
+
','
FROM
@Record
FOR
XML
PATH('')
)
A
(
Name
)
END
ELSE
BEGIN
SELECT
@Name
=
''
END
END
GO
C#代码
SqlCommand
CMD
=
new
SqlCommand(“P_XXX”,DBCN);
CMD.CommandType
=
CommandType.StoredProcere;
CMD.Parameters.Add("@Name",SqlDbType.varchar,2000);
CMD.Parameters["@Name"].Direction
=
ParameterDirection.Output;
③ 求个sql存储过程或者代码,能用加100
所有条件里月按30天,年按365天计算
SELECT * FROM 表名 WHERE
(
(Type=0 AND DATEDIFF(d,TheDateOfManufacture,GETDATE())<2920) OR
(Type=1 AND DATEDIFF(d,TheDateOfManufacture,GETDATE())<3650) OR
(Type=2 AND DATEDIFF(d,TheDateOfManufacture,GETDATE())<5475) OR
(Type=3 AND DATEDIFF(d,TheDateOfManufacture,GETDATE())<7300)
)
AND
(
(DetectionType=0 AND AttWallDeTime IS NULL AND DATEDIFF(d,TestingDates,GETDATE())>90) OR
(DetectionType=0 AND AttWallDeTime IS NOT NULL AND DATEDIFF(d,AttWallDeTime,GETDATE())>90)
)
④ SQL存储过程
create
procere
存储过程名称
as
select
班级,课程,成绩,学号
from
表
order
by
学号
go
⑤ sqlSQL数据库怎么批量为存储过程/函数授权
1:右键单击登录名Test的属性.
2: 在服务器角色里面选择"public"服务器角色。
3:在用户映射选项当中,选择"db_datareader"、"db_datawriter"、"public"三个数据库角色成员。
此时,已经实现了拥有DML操作权限,如果需要拥有存储过程和函数的执行权限,必须使用GRANT语句去授权,一个生产库的存储过程和函数加起来成千上百,如果手工执行的话,那将是一个辛苦的体力活,而我手头有十几个库,所以必须用脚本去实现授权过程。下面是我写的一个存储过程,亮点主要在于会判断存储过程、函数是否已经授予了EXE或SELECT权限给某个用户。这里主要用到了安全目录试图sys.database_permissions,例如,数据库里面有个存储过程dbo.sp_authorize_right,如果这个存储过程授权给Test用户了话,那么在目录试图sys.database_permissions里面会有一条记录,如下所示:
如果我将该存储过程授予EXEC权限给TEST1,那么
GRANT EXEC ON dbo.sp_diskcapacity_cal TO Test;
GRANT EXEC ON dbo.sp_diskcapacity_cal TO Test1;
SELECT * FROM sys.sysusers WHERE name ='Test' OR name ='Test1'
其实grantee_principal_id代表向其授予权限的数据库主体 ID ,所以我就能通过上面两个视图来判断存储过程是否授予执行权限给用户Test与否,同理,对于函数也是如此,存储过程如下所示,其实这个存储过程还可以扩展,如果您有特殊的需要的话。
复制代码 代码如下:
Code Snippet
USE MyAssistant;
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT 1 FROM sysobjects WHERE id=OBJECT_ID(N'sp_authorize_right') AND OBJECTPROPERTY(id, 'IsProcere') =1)
DROP PROCEDURE sp_authorize_right;
GO
--=========================================================================================================
-- ProcereName : sp_authorize_right
-- Author : Kerry
-- CreateDate : 2013-05-10
-- Blog : www.cnblogs.com/kerrycode/
-- Description : 将数据库的所有自定义存储过程或自定义函数赋权给某个用户(可以继续扩展)
/**********************************************************************************************************
Parameter : 参数说明
***********************************************************************************************************
@type : 'P' 代表存储过程 , 'F' 代表存储过程,如果需要可以扩展其它对象
@user : 某个用户账户
***********************************************************************************************************
Modified Date Modified User Version Modified Reason
***********************************************************************************************************
2013-05-13 Kerry V01.00.01 排除系统存储过程和系统函数的授权处理
2013-05-14 Kerry V01.00.02 增加判断,如果某个存储过程已经赋予权限
则不做任何操作
***********************************************************************************************************/
--=========================================================================================================
CREATE PROCEDURE sp_authorize_right
(
@type AS CHAR(10) ,
@user AS VARCHAR(20)
)
AS
DECLARE @sqlTextVARCHAR(1000);
DECLARE @UserId INT;
SELECT @UserId = uid FROM sys.sysusers WHERE name=@user;
IF @type = 'P'
BEGIN
CREATE TABLE #ProcereName( SqlText VARCHAR(max));
INSERT INTO #ProcereName
SELECT 'GRANT EXECUTE ON ' + p.name + ' TO ' + @user + ';'
FROM sys.proceres p
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions r
WHERE r.major_id = p.object_id
AND r.grantee_principal_id = @UserId
AND r.permission_name IS NOT NULL )
SELECT * FROM #ProcereName;
--SELECT 'GRANT EXECUTE ON ' + NAME + ' TO ' +@user +';'
--FROM sys.proceres;
--SELECT 'GRANT EXECUTE ON ' + [name] + ' TO ' +@user +';'
-- FROM sys.all_objects
--WHERE [type]='P' OR [type]='X' OR [type]='PC'
DECLARE cr_procere CURSOR FOR
SELECT * FROM #ProcereName;
OPEN cr_procere;
FETCH NEXT FROM cr_procere INTO @sqlText;
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@sqlText);
FETCH NEXT FROM cr_procere INTO @sqlText;
END
CLOSE cr_procere;
DEALLOCATE cr_procere;
END
ELSE
IF @type='F'
BEGIN
CREATE TABLE #FunctionSet( functionName VARCHAR(1000));
INSERT INTO #FunctionSet
SELECT 'GRANT EXEC ON ' + name + ' TO ' + @user + ';'
FROM sys.all_objects s
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions p
WHERE p.major_id = s.object_id
AND p.grantee_principal_id = @UserId)
AND schema_id = SCHEMA_ID('dbo')
AND( s.[type] = 'FN'
OR s.[type] = 'AF'
OR s.[type] = 'FS'
OR s.[type] = 'FT'
) ;
SELECT * FROM #FunctionSet;
--SELECT 'GRANT EXEC ON ' + name + ' TO ' + @user +';' FROM sys.all_objects
-- WHERE schema_id =schema_id('dbo')
-- AND ([type]='FN' OR [type] ='AF' OR [type]='FS' OR [type]='FT' );
INSERT INTO #FunctionSet
SELECT 'GRANT SELECT ON ' + name + ' TO ' + @user + ';'
FROM sys.all_objects s
WHERE NOT EXISTS( SELECT 1
FROM sys.database_permissions p
WHERE p.major_id = s.object_id
AND p.grantee_principal_id = @UserId)
AND schema_id = SCHEMA_ID('dbo')
AND( s.[type] = 'TF'
OR s.[type] = 'IF'
) ;
SELECT * FROM #FunctionSet;
--SELECT 'GRANT SELECT ON ' + name + ' TO ' + @user +';' FROM sys.all_objects
-- WHERE schema_id =schema_id('dbo')
-- AND ([type]='TF' OR [type]='IF') ;
DECLARE cr_Function CURSOR FOR
SELECT functionName FROM #FunctionSet;
OPEN cr_Function;
FETCH NEXT FROM cr_Function INTO @sqlText;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT(@sqlText);
EXEC(@sqlText);
FETCH NEXT FROM cr_Function INTO @sqlText;
END
CLOSE cr_Function;
DEALLOCATE cr_Function;
END
GO
⑥ SQL存储过程!!!
你可以用output类型的参数。这里的输出是一个字符串,用“,”分割,你试试
IF EXISTS ( SELECT *
FROM dbo.sysobjects
WHERE type = 'P'
AND name = 'P_XXX' )
BEGIN
DROP PROCEDURE [dbo].[P_XXX]
END
GO
CREATE PROCEDURE [dbo].[P_XXX]
(
@date DATETIME ,
@Name VARCHAR(MAX) OUTPUT
)
AS
BEGIN
IF EXISTS ( SELECT *
FROM Daily
WHERE Date = @date )
BEGIN
SELECT SUBSTRING(A.Name, 0, LEN(A.Name))
FROM ( SELECT Name + ','
FROM @Record
FOR
XML PATH('')
) A ( Name )
END
ELSE
BEGIN
SELECT @Name = ''
END
END
GO
C#代码
SqlCommand CMD = new SqlCommand(“P_XXX”,DBCN);
CMD.CommandType = CommandType.StoredProcere;
CMD.Parameters.Add("@Name",SqlDbType.varchar,2000);
CMD.Parameters["@Name"].Direction = ParameterDirection.Output;
⑦ SQL数据库 用户注册 存储过程
这样会有错哦,@user_id 虽然是输出参数,但是也要指定,并且注明为输出参数
最好不要一个个去 cmd.Parameters.AddWithValue
SqlParameter[]paramList={
newSqlParameter("@user_zhanghao",zhanghao.Text),
newSqlParameter("@user_password",pwd.Text),
....
newSqlParameter("@user_id",SqlDbType.Int,4)
};
paramList[4].Direction=ParameterDirection.Output;//paramList[4]》4为索引
foreach(SqlParameterparaminparamList)
{
cmd.Parameters.Add(param);
}
⑧ Sql server可以以密文存储密码吗
输入的密码如果是HTML的控件的话<input type="password" name="password1" id="password1" /> 如果是WEB服务器控件TextBox的话设置它的TextMode为Password即可。 输入进数据库的时候进行"MD5"加密,string password=FormsAuthentication.("要加密的字段") 显示的时候也是设置 TextBox的TextMode的属性为password即可。
⑨ 这句SQL存储过程代码什么意思
按照你需求的意思:
带@就是一个变量,这是一个简单的select语句,关键在于它的表名和一些条件是变量组成的。
它就是从表@current 与表logcurrent 的左连接且连接条件为:a.localip=b.localip and b.wbid=@wbid 中找出a.localip,a.stime,getdate(),a.deskimage 这三个字段。
其中@wbid是个变量,赋值后就是常量了好比:字符串'var'
getdate()是获得当前系统的时间。
最重要的一点是你的这句select是有错误的,在过程中如果遇到表名或者列名是变量的话,要用SQL的动态语法,而不能直接像你那样写的。
正确写法:
SET SQLSTR='select '+@wbid+',a.localip,a.stime,getdate(),a.deskimage from '+@current+' a left join logcurrent b on a.localip=b.localip and b.wbid='''+@wbid+''' where b.fid is null'
⑩ sql存储过程
AddDate > '''