Olá!
A sintaxe seria esta:
ALTER TABLE dadopro ADD CONSTRAINT PK_dadopro PRIMARY KEY(codcli);
Se continuar dando este erro que você mostrou, será necessário alterar as propriedades da coluna codcli para NOT NULL e o comando é este mesmo que você mostrou. Não sei qual a razão do erro mas, tente fazer um "quebra galho". Supondo que o tipo de dados da coluna codcli seja BIGINT, crie uma coluna a mais na tabela:
ALTER TABLE dadopro ADD tmp_codcli BIGINT NOT NULL;
COMMIT;
O próximo passo será jogar todos os codcli para a nova coluna. Naturalmente, nenhum codcli poderá estar com o valor NULL. Se existir algum NULL nesta coluna, você precisará atribuir um código único e não NULLo para ela, em cada registro que estiver netas condições.
Resolvida a questão dos NULL, preencha a coluna tmp_codcli:
UPDATE dadopro SET tmp_codcli = codcli
Se quiser, você poderá mover a nova coluna para a posição 1 da tabela:
ALTER TABLE dadopro ALTER tmp_codcli POSITION 1;
Feito isto, tente criar a PK:
ALTER TABLE dadopro ADD CONSTRAINT PK_dadopro PRIMARY KEY(tmp_codcli);
Se der certo delete a coluna codcli antiga
ALTER TABLE dadopro drop codcli;
e renomeie a coluna temporária para o nome antigo:
ALTER TABLE dadopro alter tmp_codcli to codcli;
Naturalmente, estas operações tem que ser feitas quando o banco não estiver sendo usado por outros usuários. Também é preciso levar em conta as dependências desta tabela, como foreign keys, stored procedures, triggers, views. Nem é preciso dizer que fazer backup da tabela antes é essencial. Para isto, use:
SELECT * INTO dadopro_bkp FROM dadoopro;