小编use*_*471的帖子

使用动态SQL的列名无效

我试图第一次使用动态SQL - 现在我理解它的要点,但尝试使用动态SQL将参数输入临时表我得到"无效的列名称"当我只是尝试输入此文本作为不打算成为列的文本.

另外值得一提的是我在SQL Server 2005上运行它.

这是我执行的查询

SELECT ARCHV_FLAG,PATNT_REFNO,ACTIVE_NAMES,AINPT_REFNO INTO #TEMP FROM ACTIVE_NAMES WHERE PATNT_REFNO = 1 AND ARCHV_FLAG = 'C'

Fix SET @SQL = 'SELECT ARCHV_FLAG,PATNT_REFNO,'''+@TABLE +''' AS      [ACTIVE_NAMES],'+ @PK + ' INTO #TEMP FROM ' + @TABLE + ' WHERE PATNT_REFNO = '+ CAST(@PATNT AS VARCHAR (100))+ ' AND ARCHV_FLAG = ''C'''
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

DECLARE
    @SQL NVARCHAR(4000),
    @SQL1 NVARCHAR(4000),
    @TABLE VARCHAR (100),
    @PK VARCHAR (50),
    @PATNT INT

SET @PATNT = 1

CREATE TABLE #TEMP
(
    ARCHV_FLAG VARCHAR (1),
    PATNT_REFNO …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server dynamic cursor

5
推荐指数
1
解决办法
696
查看次数

SQL Server 数据屏蔽 屏蔽所需的最低权限

我正在屏蔽 SQL Server 2017 数据库中的一些数据。我用这个语句屏蔽了一个列:

ALTER TABLE lEmployee
    ALTER COLUMN FirstName nvarchar(160) 
          MASKED WITH (FUNCTION = 'partial(2,"xxx",2)')
Run Code Online (Sandbox Code Playgroud)

我可以看到sys.columns这现在被掩盖了。

现在在应用程序中,数据没有显示为掩码(当以该用户身份登录时,数据也没有显示在数据库中)。我还运行了以下命令以确保用户没有此权限。

REVOKE UNMASK TO testuser
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议所需的最低权限,以便数据屏蔽按预期工作。

先感谢您

sql t-sql sql-server permissions data-masking

5
推荐指数
1
解决办法
1337
查看次数

MYSQL如果参数为null则设置

我是MYSQL的新手,但对SQL有基本的了解,我想说的是,如果我的参数没有设置(即null),那么将其设置为JM。

下面的脚本我出了什么问题/哪里出了问题?

提前致谢

CREATE DEFINER=`james`@`%` PROCEDURE `Project_Status`(IN engineer VARCHAR (5))
BEGIN

SELECT 
    PP.pid_full,
    PP.description_small,
    PP.project_status,
    PP.est_comp_date as 'Est Comp Date',
    EP.engineer
FROM 
    project_pid pp
JOIN
    eng_project_hours EP on PP.pid_full = EP.pid_full

where engineer = ep.engineer;

IF engineer is null then update engineer = jm
set engineer = ep.engineer;
end if;

end
Run Code Online (Sandbox Code Playgroud)

mysql sql stored-procedures

0
推荐指数
1
解决办法
1万
查看次数